Android 滑动与点击事件冲突的处理

背景

仿IOS 实现一个列表项左滑动删除的功能,用一个LinearLayout加上GestureDetector来实现滑动,LinearLayout中的子view添加点击事件,父view的滑动事件与子view点击事件如何优雅的处理?

思路

android 中事件分发机制中,有3个关键的方法,dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent,具体他们如何使用的,以后有空再给大家介绍。
说明:在父类中分发、拦截处理事件,因为在该场景中,可能会扩展多个按钮(与删除并列),为了扩性,由父View统一处理。

首先,在负责消息分发的dispatchTouchEvent中,将消息同时分发给mGestureDetector.onTouchEvent(ev)

其次,在onInterceptTouchEvent中,不拦截down和move事件,只拦截up事件即可,因为up事件是子view是否执行点击操作的关键

最后,在GestureDetector.OnGestureListener.onScoll()方法中判断是否产生滑动,如果滑动了,则拦截up事件;如果没有滑动,则传递up事件到子view,从而长生点击

实现

代码用kotlin写的,17年Google开发者大会强推的语音,语法挺简单的,关键代码如下:

override fun onScroll(e1: Motio
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值