我在安卓系统工作。我有一些功能需要在以下方法上完成:

1. MotionEvent.ACTION_DOWN
2. MotionEvent.ACTION_UP
3. MotionEvent.ACTION_MOVE

我还想对那张图片做fling()
对于上面的需求,我在应用程序中实现了onGestureListeneronTouchListener,但它们不能正常工作。onTouchListener正在工作,但onGestureListener不工作。当我删除onTouchListner代码时,onGestureListener工作正常。
所以请告诉我我该怎么做。我想在我的应用程序中实现这四种方法。
1. MotionEvent.ACTION_DOWN
2. MotionEvent.ACTION_UP
3. MotionEvent.ACTION_MOVE
4. onFling

最佳答案

通过在活动中实现ongesturelistener,可以覆盖以下方法来实现这一点

// For touch
public boolean onSingleTapUp(MotionEvent event) { return false; }

// For Fling
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
        float velocityY) {
    return false;
}

希望这有帮助。
编辑1:详细说明:
1>从您的活动中实现ongesturelistener
public class MyActivity implements OnGestureListener

2>创建GestureDetector实例:
private GestureDetector gestureScanner;

onCreate
// Avoid a deprecated constructor
// (http://developer.android.com/reference/android/view/GestureDetector.html)
gestureScanner = new GestureDetector(this, this);

3>覆盖以下方法:
@Override
public boolean onTouchEvent(MotionEvent event) {
    return gestureScanner.onTouchEvent(event);
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
        float velocityY) {
    /* on scroll to the next page in story */

    if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
            && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
        // ...
    }
    /* on scroll to the previous page in story */
    else if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
            && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
        // ...
    }

    return false;
}

@Override
public boolean onSingleTapUp(MotionEvent event) {
    return false;
}

编辑2:用于处理移动
重写onscroll方法查看详细信息here

10-05 17:49