Great! Will it fix the problem in my app if I pull GestureDetector.java from Cupcake and include/use it in my code?
On Mar 31, 4:05 pm, Romain Guy <romain...@google.com> wrote: > The problem comes from the VelocityTracker used by the > GestureDetector. The tracker has a pool of 1 instance but there's a > bug in the pool management which causes both your GestureDetector and > ListView to use the *same* VelocityTracker. This means the tracker > receives most events twice. > > I just fixed this issue in Cupcake. > > > > On Tue, Mar 31, 2009 at 4:01 PM, focuser <linto...@gmail.com> wrote: > > > OK, but could you explain briefly why the GestureDetector would have > > such side effect? In the code above I don't see any events being > > stolen nor any new events being created. Original events are just > > passed to FrameLayout.dispatchTouchEvent as if there's no > > GestureDetector used. > > > I even tried the following but it makes no difference. > > public boolean dispatchTouchEvent(MotionEvent ev) { > > MotionEvent oldEv = ev.obtain(); > > boolean handled = mGestureDetector.onTouchEvent(ev); > > return super.dispatchTouchEvent(oldEv); > > } > > > On Mar 31, 12:07 pm, Romain Guy <romain...@google.com> wrote: > >> Unfortunately I don't see any possible workaround :( > > >> On Tue, Mar 31, 2009 at 11:40 AM, focuser <linto...@gmail.com> wrote: > > >> > Thanks Romain, > > >> > I have just filed > >> > ithttp://code.google.com/p/android/issues/detail?id=2337. > > >> > But before it's fixed in a new release, is there any workaround or I > >> > will have to play with the VelocityTracker myself? > > >> > On Mar 31, 10:39 am, Romain Guy <romain...@google.com> wrote: > >> >> Hi, > > >> >> It looks like a bug in the VelocityTracker. Can you please file it at > >> >> b.android.com? Thanks > > >> >> On Tue, Mar 31, 2009 at 10:28 AM, focuser <linto...@gmail.com> wrote: > > >> >> > Hi, > > >> >> > I'm trying to use a GestureDetector in a subclass of FrameLayout, > >> >> > which has a child ListView. > >> >> > But it seems the GestureDetector has some side effect which causes > >> >> > abnormal scrolling behaviors for the child ListView, e.g. sometime > >> >> > when flinging down, the list actually scrolls upwards; when the list > >> >> > is being flung (i.e. the scrolling animation is still playing) and you > >> >> > press and hold on the list, the scroling stops (which is normal), but > >> >> > as soon as you release, the list scrolls. > > >> >> > The code for the layout is shown below. Apparently it actually does > >> >> > nothing extra but calling GestureDetector.onTouchEvent(). If the line > >> >> > "boolean handled = mGestureDetector.onTouchEvent(ev);" is commented > >> >> > out, the child ListView will scroll as normal. Is it because the call > >> >> > to onTouchEvent() takes some time that confuses the child ListView? > > >> >> > Also, it seems this problem only occurs when the list item is complex, > >> >> > e.g. consisting of multiple ImageViews, TextView etc. Everything > >> >> > works fine if it's just a list of TextView's. > > >> >> > public class MyLayout extends FrameLayout implements OnGestureListener > >> >> > { > >> >> > ... > >> >> > �...@override > >> >> > public boolean dispatchTouchEvent(MotionEvent ev) { > >> >> > boolean handled = mGestureDetector.onTouchEvent(ev); > >> >> > return super.dispatchTouchEvent(ev); > >> >> > } > > >> >> > public void onShowPress(MotionEvent e) { > >> >> > } > > >> >> > public boolean onSingleTapUp(MotionEvent e) { > >> >> > return false; > >> >> > } > > >> >> > public void onLongPress(MotionEvent e) { > >> >> > } > > >> >> > public boolean onDown(MotionEvent e) { > >> >> > return false; > >> >> > } > > >> >> > public boolean onFling(MotionEvent e1, MotionEvent e2, float > >> >> > velocityX, > >> >> > float velocityY) { > >> >> > return false; > >> >> > } > > >> >> > public boolean onScroll(MotionEvent e1, MotionEvent e2, float > >> >> > distanceX, > >> >> > float distanceY) { > >> >> > return false; > >> >> > } > >> >> > } > > >> >> -- > >> >> Romain Guy > >> >> Android framework engineer > >> >> romain...@android.com > > >> >> Note: please don't send private questions to me, as I don't have time > >> >> to provide private support. All such questions should be posted on > >> >> public forums, where I and others can see and answer them > > >> -- > >> Romain Guy > >> Android framework engineer > >> romain...@android.com > > >> Note: please don't send private questions to me, as I don't have time > >> to provide private support. All such questions should be posted on > >> public forums, where I and others can see and answer them > > -- > Romain Guy > Android framework engineer > romain...@android.com > > Note: please don't send private questions to me, as I don't have time > to provide private support. All such questions should be posted on > public forums, where I and others can see and answer them --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---