У меня есть приложение, которое использует GestureDetector, и я заменяю некоторые изображения onDown и onFling (он же onUp). Однако в некоторых случаях onFling не вызывается, и результат не очень хорош :)
Сталкивались ли вы с такой проблемой и нашли ли вы решение/обходной путь (кроме использования тайм-аута)?
Вот небольшой код:
final GestureDetector gdt1 = new GestureDetector(getApplicationContext(), new MyGestureDetector(mGestDetector, R.id.weatherFrame1));
FrameLayout weatherFrame1 = (FrameLayout)findViewById(R.id.weatherFrame1);
if (weatherFrame1 != null)
{
weatherFrame1.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(final View view, final MotionEvent event)
{
gdt1.onTouchEvent(event);
return true;
}
});
}
А вот часть MyGestureDetector.java
public class MyGestureDetector implements GestureDetector.OnGestureListener{
{
...
@Override
public boolean onDown(MotionEvent e)
{
int index = e.getActionIndex();
int pointerId = e.getPointerId(index);
if (startingPointerId == -1)
{
Log.i("MyGestureDetector", "Pointer is " + pointerId);
if (pointerId == 0)
{
startingPosX = e.getX(pointerId);
startingPosY = e.getY(pointerId);
startingPointerId = pointerId;
if (null != mGestureListener)
{
mGestureListener.onDown(mGestureOrigin);
}
}
}
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
startingPointerId = -1;
if (null != mGestureListener)
{
mGestureListener.onUp(mGestureOrigin);
}
return true;
}
}
Notified of a fling event when it occurs with the initial on down MotionEvent and the matching up MotionEvent.
, в моем случае не требуется перетаскивание, только события вниз и вверх. - person dragi   schedule 28.05.2014