0

我对OnSwipeImageListener(实现OnTouchListener)有疑问。我OnSwipeImageListener在两个活动中使用。
在一个活动上ImageViewOnTouchListener和一个OnClickListener,而在另一个活动上ImageView是唯一的OnTouchListener
如果我将 return v. 更改onTouchEvent(event)true下,MotionEvent.ACTION_DOWNOnClickListener第一个活动上的那个不起作用,这样ImageView第二个活动上的 Swipe 不起作用。我调试了几次,发现它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);
}
4

1 回答 1

1

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

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

于 2013-08-26T07:36:21.917 回答