Android监听屏幕的滑动事件

实现监听屏幕上下左右滑动事件

前段时间为了实现这个功能在网上找了很多教程,发现很多教程都是很大的篇幅,对于像我这种一点都不了解的人GestureListener的人来说可能很难理解,动不动就是几百行代码,也不方便我们浏览到自己想要的信息。我那时就在想:其实我就只是想简单的实现监听屏幕的滑动事件,哪用得着这么麻烦。

之后经过大量的查找,才发现实现这个功能的简单方法,通过继承GestureDetector的SimpleOnGestureListener这个类然后重写onFling方法在里面实现相应的逻辑就完成了这个功能,下面是代码:

public class MainActivity extends AppCompatActivity {

    //定义滑动的最小距离
    private static final int MIN_DISTANCE=100;
    private GestureDetector gestureDetector;
    private MyGestureDetector myGestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //实例化MyGestureDetector
        myGestureDetector=new MyGestureDetector();
        //实例化GestureDetector并将MyGestureDetector实例传入
        gestureDetector=new GestureDetector(this,myGestureDetector);
    }

    /**
     * 重写onTouchEvent返回一个gestureDetector的屏幕触摸事件
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    }

    /**
     * 自定义MyGestureDetector类继承SimpleOnGestureListener
     */
    class MyGestureDetector extends GestureDetector.SimpleOnGestureListener{

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            if(e1.getX()-e2.getX()>MIN_DISTANCE){
                Toast.makeText(MainActivity.this,"左滑",Toast.LENGTH_SHORT).show();
            }else if(e2.getX()-e1.getX()>MIN_DISTANCE){
                Toast.makeText(MainActivity.this,"右滑",Toast.LENGTH_SHORT).show();
            }else if(e1.getY()-e2.getY()>MIN_DISTANCE){
                Toast.makeText(MainActivity.this,"上滑",Toast.LENGTH_SHORT).show();
            }else if(e2.getY()-e1.getY()>MIN_DISTANCE){
                Toast.makeText(MainActivity.this,"下滑",Toast.LENGTH_SHORT).show();
            }
            return true;
        }
    }
}

这个方法相比起实现GestureDetector.OnGestureListener要方便得多,GestureDetector.OnGestureListener必须要重写下面的所有方法:

按下(onDown):刚刚手指接触到触摸屏的那一刹那,就是触的那一下。
抛掷(onFling):手指在触摸屏上迅速移动,并松开的动作。
长按(onLongPress):手指按在持续一段时间,并且没有松开。
滚动(onScroll):手指在触摸屏上滑动。
按住(onShowPress):手指按在触摸屏上,它的时间范围在按下起效,在长按之前。
抬起(onSingleTapUp)手指离开触摸屏的那一刹那。

而GestureDetector.SimpleOnGestureListener只需要选择对我们需要重写的方法重写,显得更加的简单,想重写什么方法就重写什么方法。

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值