您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

查看触摸事件

时间:02-06来源:作者:点击数:

在Android开发中,要想知道执行了哪些触摸事件,可以覆盖一个View的dispatchTouchEvent方法或onInterceptTouchEvent方法、或onTouchEvent方法,但这都需要写一个子View,然后在布局中修改为使用这个子View,这比较麻烦,我们可以直接给View设置一个OnTouchListener监听器,这样触摸事件就会传到这个监听器中,如下:

val touchListener = View.OnTouchListener { v, event ->
	Log.i("ABCD", "action = ${event.action})
	false
}
view.setOnTouchListener(touchListener)

需要注意的是,在监听器中要返回false,如果返回true,则view原来对触摸事件的处理逻辑将不会被执行,也就是说view的onTouchEvent函数将不会被调用,所以我们要返回false,这样既能知道触摸事件,又不影响原来的行为。

相对的,我们有时候也可以返回true,比如我们要修改一个View的触摸行为时,我们不需要去写一个子View,然后覆盖onTouchEvent函数,这样比较麻烦,我们直接设置OnTouchListener监听器并返回true即可。

后续(2021-07-20):返回false也会有问题,因为返回false后表示不需要触摸事件,所以后续Move事件和Up事件将不会收到,所以,如果想要接收这些事件只能返回true了,没法两全齐美。如果不消费事件也想接收到这些Move和Up事件的话只能写一个子类来覆盖ViewGroup的dispatchTouchEvent函数,在这里可以接收到Down、Move、Up事件。

总结就是,OnTouchListener 只适合于你要改变触摸行为时使用,此时是要返回true的,这样的好处是不需要创建View的子类。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门