Android爬坑记录——GestureDetector无效

Android爬坑记录——GestureDetector无效

很多小伙伴在第一次使用手势监听的时候,肯定会遇到GestureDetector无效的情况,那么究竟是为什么呢?我们直接来看谷歌官方文档

Whether or not you use GestureDetector.OnGestureListener, it’s best practice to implement an onDown() method that returns true. This is because all gestures begin with an onDown() message. If you return false from onDown(), as GestureDetector.SimpleOnGestureListener does by default, the system assumes that you want to ignore the rest of the gesture, and the other methods of GestureDetector.OnGestureListener never get called. This has the potential to cause unexpected problems in your app. The only time you should return false from onDown() is if you truly want to ignore an entire gesture.

上面的大概内容就是说,当你实现GestureDetector.OnGestureListener接口时,最好重写onDown() 方法,并且使其的返回值为true,这是因为所有手势都以onDown() 消息开头。

所以解决方法就是:

     private class MyGestureListener : GestureDetector.SimpleOnGestureListener() {

        override fun onDown(event: MotionEvent): Boolean {
            return true
        }
     }
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android GestureDetector是Android框架提供的一个手势检测器,可以通过它来识别用户在屏幕上的手势操作,例如单击、双击、长按、滑动等。使用GestureDetector可以大大简化手势操作的处理,同时也可以提升用户的使用体验。 GestureDetector主要有两种用法: 1. 直接使用GestureDetector类 在Activity或View中创建GestureDetector实例,然后在onTouchEvent()方法中将MotionEvent事件传递给GestureDetector实例进行处理。示例代码如下: ``` public class MyActivity extends Activity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { private GestureDetector gestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gestureDetector = new GestureDetector(this, this); gestureDetector.setOnDoubleTapListener(this); } @Override public boolean onTouchEvent(MotionEvent event) { return gestureDetector.onTouchEvent(event); } @Override public boolean onSingleTapConfirmed(MotionEvent e) { // 处理单击事件 return true; } @Override public boolean onDoubleTap(MotionEvent e) { // 处理双击事件 return true; } @Override public boolean onDown(MotionEvent e) { return true; } // 省略其他回调方法 } ``` 2. 继承SimpleOnGestureListener类 SimpleOnGestureListener是GestureDetector.OnGestureListener和GestureDetector.OnDoubleTapListener接口的默认实现类,我们可以通过继承它来处理手势操作。示例代码如下: ``` public class MyGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onSingleTapConfirmed(MotionEvent e) { // 处理单击事件 return true; } @Override public boolean onDoubleTap(MotionEvent e) { // 处理双击事件 return true; } // 省略其他回调方法 } ``` 在Activity或View中创建GestureDetector实例,然后将继承自SimpleOnGestureListener的实例设置给GestureDetector实例。示例代码如下: ``` public class MyActivity extends Activity { private GestureDetector gestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gestureDetector = new GestureDetector(this, new MyGestureListener()); } @Override public boolean onTouchEvent(MotionEvent event) { return gestureDetector.onTouchEvent(event); } } ``` 以上就是Android GestureDetector的基本用法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值