【问题标题】:MotionEvent.ACTION_UP is not called未调用 MotionEvent.ACTION_UP
【发布时间】:2013-08-26 07:09:07
【问题描述】:

我对@9​​87654321@ 有疑问(实现OnTouchListener)。我在两个活动中使用OnSwipeImageListener
ImageView 上的一项活动是OnTouchListenerOnClickListener,而在ImageView 上的另一项活动只​​有OnTouchListener
如果我在MotionEvent.ACTION_DOWN 下将return v.onTouchEvent(event) 更改为true,则第一个活动上的OnClickListener 不起作用,这样第二个活动上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);
}

【问题讨论】:

    标签: java android onclicklistener ontouchlistener motionevent


    【解决方案1】:

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

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

    【讨论】:

    • 是的,您应该在“ACTION_UP”部分(并考虑当前位置是否超出您的视图边界)而不是在“OnClick”中进行工作。那是平等的。
    猜你喜欢
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多