android事件分发与滑动冲突

本文针对Android开发中常见的滑动冲突问题提供了解决方案。通过重写onInterceptTouchEvent()方法来控制父容器是否拦截触屏事件,以及在子View中通过dispatchTouchEvent()方法告知父容器不要进行拦截。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起因

今天做一个功能又遇到了滑动冲突,这也就涉及到了事件分发。以前研究过的,也记不太清了,每次都要搜集很多资料,故在此记录一下。

搜集的资料

Android滑动冲突解决方法(一)
http://www.jianshu.com/p/8bc0765dffc9

Android滑动事件冲突
http://www.cnblogs.com/yxx123/p/5250101.html

Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
http://blog.csdn.net/sinyu890807/article/details/9097463

Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
http://blog.csdn.net/sinyu890807/article/details/9153747

视频:Android触摸事件传递机制及viewpager嵌套fragment冲突处理
http://edu.csdn.net/course/detail/3298/55124?auto_start=1

心得

前人栽树后人乘凉,本来我还想写些心得,可是前人写的这么好,我都不忍心总结了。怕误导后人。等我继续修行,日后自己的想法渐渐变成熟了再来写吧,在此记录下。

总结

我还是冒昧的总结下吧,原理的东西上边的文章都已经说的很详细了。
考虑到以后再遇到类似问题可能不一定有时间再去研究原理,只是知道怎么用就行了,那我就总结下怎么用吧,其实关键就两个方法。


  • 是父容器重写
    onInterceptTouchEvent()方法里。
    true就是父容器拦截,
    false就是父容器不拦截


  • 是子view重写
    dispatchTouchEvent()
    方法,并调用getParent().requestDisallowInterceptTouchEvent(true)
    告知父容器,不要拦截。

好吧,我还是总结了。虽然总结的很渣、很草率,但也是总结啊。
对了,这只是大体的两个方向,具体案列还得具体对待呀。也就是到底true还是false根据什么条件来判断的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值