java - MotionEvent.ACTION_UP 未被调用

标签 java android onclicklistener ontouchlistener motionevent

我的 OnSwipeImageListener 有问题(实现 OnTouchListener)。我在两个 Activity 中使用 OnSwipeImageListener
ImageView 上的一个 Activity 是 OnTouchListenerOnClickListener,而 ImageView 上的另一个 Activity 是仅OnTouchListener
如果我将 MotionEvent.ACTION_DOWN 下的 return v.onTouchEvent(event) 更改为 true,则 OnClickListener 上第一个 Activity 不起作用,这样第二个 Activity 上的 ImageView 滑动不起作用。我调试了几次,发现 MotionEvent.ACTION_UP 从未被调用。

public boolean onTouch(View v, MotionEvent event) {

    switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        dX = event.getX();
        dY = event.getY();
        return v.onTouchEvent(event);
    case MotionEvent.ACTION_UP:
        uX = event.getX();
        uY = event.getY();

        float deltaX = dX - uX;
        float deltaY = dY - uY;

        // horizontal
        if(Math.abs(deltaX) > MIN_DISTANCE) {

            //Left to right
            if(deltaX < 0) {
                this.onLeftToRight();
                return v.onTouchEvent(event);
            } else if (deltaX > 0) {
                this.onRightToLeft();
                return v.onTouchEvent(event);
            }
            else {
                //Swipe too short
                return v.onTouchEvent(event);
            }
        }

        // vertical
        if (Math.abs(deltaY) > MIN_DISTANCE) {

            if(deltaY < 0) {
                this.onTopToBottom();
                return v.onTouchEvent(event);
            } else if (deltaY > 0) {
                this.onBottomToTop();
                return v.onTouchEvent(event);
            }
            else {
                //Swipe too short
                return v.onTouchEvent(event);
            }
        }
    }
    return v.onTouchEvent(event);
}

最佳答案

如果你想获得ACTION_UP,你应该劫持ACTION_DOWN。

当您刚刚处理 ACTION_DOWN 时,不要返回“v.onTouchEvent(event)”,而是返回“true”。

关于java - MotionEvent.ACTION_UP 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18438505/

相关文章:

android - Cordova - 在收到通知后在后台更改 Android 设备上的徽章编号

javascript - 如何在 Javascript 中将 srcElement 转换为字符串

Android - 警告对话框 - 自制取消按钮

java - Eclipse:我的一个文件的语法突出显示消失了

Java上的kill方法

android - 在android中以编程方式添加 Activity

java - 如何使用维基数据 API 或 Freebase 的替代品

java - float 按钮 setOnClickListener 不会在 Android 中被调用

java - 在Java中将String日期转换为ISO日期格式“2019-07-01T03:50:00.000Z”

Java:在重写文件之前检查文件是否需要更新的最佳方法是什么?