0

OnSwipeImageListener(実装)に問題がありOnTouchListenerます。OnSwipeImageListenerを2 つのアクティビティで使用します。
の 1 つのアクティビティImageViewは でOnTouchListenerありOnClickListener、 の他のアクティビティImageViewは のみOnTouchListenerです。
return v.onTouchEvent(event)true下に変更MotionEvent.ACTION_DOWNするOnClickListenerと、最初のアクティビティが機能せず、このように 2 番目のアクティビティのスワイプが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);
}
4

1 に答える 1

1

ACTION_UP を取得したい場合は、ACTION_DOWN をハイジャックする必要があります。

v.onTouchEvent(event)" " を返す代わりにtrue、ACTION_DOWN を処理しているときに " " を返します。

于 2013-08-26T07:36:21.917 に答える