这里事实上没太多要说的,重点关注:
1、onClick和onLongClick运行的时机:onClick时在UP事件中运行的,onLongClick实在Down事件中运行的,仅仅是假设在Down事件中已经运行了onLongClick的话,则mHasPerformedLongPress变量会被置为true,这样在UP事件中。就会把onClick的回调remove掉。就不会再运行onClick了。
2、仅仅要该View是clickable的,就一定会消费掉Touch事件,仅仅是,假设该View是Disable的话,尽管消费掉了Touch事件。可是不做不论什么处理。
另外。有一点大致说下:
源代码的前面部分有一个mTouchDelegate变量(默觉得null),假设它不为null的话。会将Touch事件分发给它。
详细的意思是这种。假设有两个视图v1和touchDelegate1。它们的布局相互之间不重叠。假设设置了v1.setTouchDelegate(touchDelegate1)的话,v1的触摸事件就会分发给touchDelegate1中的view(TouchDelegate中有一个view变量)。
?
为了便于总体上对源代码流程的把握,这里相同画了一个流程图
最后,关于整个Touch事件在View树中的传递流程,相同画了张流程图,看起来会更直观。有助于对总体流程的把控:
以上流程图中有些地方文字有错位。应该不影响对流程的总体理解和把握。
事实上相对来说,事件的分发处理属于Android中比较基础的知识点。但想把整个流程完整地串通,还是要花些时间的。这篇文章在10月份的时候就想写了,可是工作后,写博客的时间越来越少。人也变得越来越懒了。
。。
整篇文章断断续续坚持着写下来还是挺费劲的。
好了,不多说了,下篇文章,将通过一个Demo,结合8种不同的情况,对Touch事件在View树中传递时源代码的运行情况做一个详细的分析。
? ? ? ? ?一直想做个公众号。可是考虑到在手机端看代码的用户体验确实太差。而我又比较喜欢正能量的东东。最后倒腾了一个鸡汤号,每日一篇正能量好文,同一时候各种互联网信息爆料。尽在当中。
。。
欢迎扫码关注。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-84984-10.html
厂家一天生产那么多黑芝麻粉