Android: How to handle right to left swipe gestures

前端 未结 22 1523
日久生厌
日久生厌 2020-11-21 06:18

I want my app to recognize when a user swipes from right to left on the phone screen.

How to do this?

22条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-21 07:16

    To add an onClick as well, here's what I did.

    ....
    // in OnSwipeTouchListener class
    
    private final class GestureListener extends SimpleOnGestureListener {
    
        .... // normal GestureListener  code
    
       @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            onClick(); // my method
            return super.onSingleTapConfirmed(e);
        }
    
    } // end GestureListener class
    
        public void onSwipeRight() {
        }
    
        public void onSwipeLeft() {
        }
    
        public void onSwipeTop() {
        }
    
        public void onSwipeBottom() {
        }
    
        public void onClick(){ 
        }
    
    
        // as normal
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector.onTouchEvent(event);
    }
    
    } // end OnSwipeTouchListener class
    

    I'm using Fragments, so using getActivity() for context. This is how I implemented it - and it works.


    myLayout.setOnTouchListener(new OnSwipeTouchListener(getActivity()) {
                public void onSwipeTop() {
                    Toast.makeText(getActivity(), "top", Toast.LENGTH_SHORT).show();
                }
                public void onSwipeRight() {
                    Toast.makeText(getActivity(), "right", Toast.LENGTH_SHORT).show();
                }
                public void onSwipeLeft() {
                    Toast.makeText(getActivity(), "left", Toast.LENGTH_SHORT).show();
                }
                public void onSwipeBottom() {
                    Toast.makeText(getActivity(), "bottom", Toast.LENGTH_SHORT).show();
                }
    
                public void onClick(){
                    Toast.makeText(getActivity(), "clicked", Toast.LENGTH_SHORT).show();
                }
            });
    

提交回复
热议问题