Android TouchEvent分发

近期做一个拖拽的项目,需要实现listView的单击效果,滑动效果以及长按时的拖拽效果。这里主要需要考虑Android中的TouchEvent事件分发处理。

事件分发

如图所示,当listView调用onInterceptTouchEvent函数处理完后,若返回false,该事件将继续往子View分发,如果返回
true,不再向子view分发,直接调用本级的onTouchEvent方法。同样,在子调用onTouchEvent方法时,如果返回false,表明
子不消费该事件,全部交给父处理;如果子返回true,表明子消耗该事件,父只能收到
dispatchTouchEvent事件和onInterceptTouchEvent事件,收不到onTouchEvent事件。

另外,TouchEvent和OnClick的相应事件顺序为ACTION_DOWN->ACTION_MOVE->OnLongClick->ACTION_UP->OnClick。
listview和gridview,默认子item只能收到action_down事件,收不到action_move和action_up事件,因为listview要响应自己的onTouchEvent,打印log可以发现,子item的onTouchEvent事件返回了false,onTouchEvent事件交由上层处理,如果需要子item响应,只需要设置子item可以点击即可,但是此时子item可以处理onTouchEvent事件,父就收不到响应事件了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值