Android: How to handle right to left swipe gestures

前端 未结 22 1170
日久生厌
日久生厌 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:06

    public class TranslatorSwipeTouch implements OnTouchListener
    {
       private String TAG="TranslatorSwipeTouch";
    
       @SuppressWarnings("deprecation")
       private GestureDetector detector=new GestureDetector(new TranslatorGestureListener());
    
       @Override
       public boolean onTouch(View view, MotionEvent event)
       {
         return detector.onTouchEvent(event);
       }
    
    private class TranslatorGestureListener extends SimpleOnGestureListener 
    {
        private final int GESTURE_THRESHOULD=100;
        private final int GESTURE_VELOCITY_THRESHOULD=100;
    
        @Override
        public boolean onDown(MotionEvent e) {
            return true;
        }
    
        @Override
        public boolean onFling(MotionEvent event1,MotionEvent event2,float velocityx,float velocityy)
        {
            try
            {
                float diffx=event2.getX()-event1.getX();
                float diffy=event2.getY()-event1.getY();
    
                if(Math.abs(diffx)>Math.abs(diffy))
                {
                    if(Math.abs(diffx)>GESTURE_THRESHOULD && Math.abs(velocityx)>GESTURE_VELOCITY_THRESHOULD)
                    {
                        if(diffx>0)
                        {
                            onSwipeRight();
                        }
                        else
                        {
                            onSwipeLeft();
                        }
                    }
                }
                else
                {
                    if(Math.abs(diffy)>GESTURE_THRESHOULD && Math.abs(velocityy)>GESTURE_VELOCITY_THRESHOULD)
                    {
                        if(diffy>0)
                        {
                             onSwipeBottom();
                        }
                        else
                        {
                            onSwipeTop();
                        }
                    }
                }
            }
            catch(Exception e)
            {
                Log.d(TAG, ""+e.getMessage());
            }
            return false;           
        }
    
        public void onSwipeRight()
        {
            //Toast.makeText(this.getClass().get, "swipe right", Toast.LENGTH_SHORT).show();
            Log.i(TAG, "Right");
        }
        public void onSwipeLeft()
        {
            Log.i(TAG, "Left");
            //Toast.makeText(MyActivity.this, "swipe left", Toast.LENGTH_SHORT).show();
        }
    
        public void onSwipeTop()
        {
            Log.i(TAG, "Top");
            //Toast.makeText(MyActivity.this, "swipe top", Toast.LENGTH_SHORT).show();
        }
    
        public void onSwipeBottom()
        {
            Log.i(TAG, "Bottom");
            //Toast.makeText(MyActivity.this, "swipe bottom", Toast.LENGTH_SHORT).show();
        }   
    
      }
    
     }
    

提交回复
热议问题