Android onGestureListener 和 onTouchListner

标签 android

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

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

最佳答案

您可以通过覆盖以下方法的 Activity 实现 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> 从您的 Activity 中实现 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:用于处理 Move 重写onScroll方法查看详情here

关于Android onGestureListener 和 onTouchListner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9719741/

相关文章:

android - 有没有办法在Scrollview里面滚动gridview/listview的滚动条?

android - 禁用 Toast 的异步显示

Android以编程方式更改抽屉导航菜单项文本

php - 如何修复PHP插入数据时的错误

android - 如何在相机预览中添加按钮

Android:对主要 Activity 设置自定义权限 - 不好的做法?

android - 如何将 View 放在具有透明背景的 glSurfaceView 之上?

java - AlarmManager:设置停止通知的时间

Android 多个 ImageView 触摸移动

android - 使用新的 youtube API 库获取经过的 youtube 视频时间