onInterceptTouchEvent()的机制

来源:互联网 发布:霍启山 章子怡 知乎 编辑:程序博客网 时间:2024/04/30 01:19
   由于onInterceptTouchEvent()的机制比较,复杂上面的说明写的也比较复杂,总结一下,基本的规则是:

1.       down事件首先会传递到onInterceptTouchEvent()方法

2.       如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return false,内部view将也会获取到down,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后一样传递给最终的目标view的onTouchEvent()处理。

3.       如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,内部view不会货到down,后续的move, up等事件也不再传递给onInterceptTouchEvent(),当然,move,up也不会传给view

4.       如果最终需要处理事件的view的onTouchEvent()返回了false,那么该事件将被传递至其上一层次的view的onTouchEvent()处理。

5.       如果最终需要处理事件的view 的onTouchEvent()返回了true,那么后续事件将可以继续传递给该view的onTouchEvent()处理。

6.       group的touch和这个机制没关系,与上一级有关系。


所以总结一下几点

 

1,group为false ,view为false ,的情况,touch每次都会从group到view ,view设了false(说明他不想处理了),但是group是false,就不得不把touch每次都给view,所以view每次都被强迫接受一次touch(down,up,move中的一个);

2,group 为true ,view 是什么都无所谓了,人家group根本就不给你touch。当然,如果你想的到一次的话,你可以在group的onInterceptTouchEvent中加上View view = findViewById(id);view.dispatchTouchEvent(event); 来触发view仅有的一次touch;

3,group 为false,view为true,的情况,跟第一种基本一样,第一种的view每次都被强迫,跟他自己接受没什么区别,所以几乎一样。

0 0
原创粉丝点击