文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ViewGroup.onInterceptTouchEvent() onTouchEvent()

ViewGroup.onInterceptTouchEvent() onTouchEvent()

时间:2010-10-20  来源:flyfordream_h

 

ViewGroup类的onInterceptTouchEvent(MotionEvent ev)分析

实现这个方法去拦截所有的屏幕手势动作事件。这允许你去查看这些事件当它们被分发到ViewGroup的下一级view,并且在任何一点能拥有当前的手势。

使用这个方法要注意:它与View.onTouchEvent(MotionEvent)方法有相当复杂的交互,使用它必须要同样正确的实现这个方法。事件将会以下面的顺序到达:

1、  你将会在这里接收到down事件

2、  Down事件或者被该viewGroup的一个child处理,或者将被给到viewGroup自己的onTouchEvent()方法来处理。这意味着你应该实现onTouchEvent()从而可以返回true,所以你将继续看到剩余的手势(而不是寻找一个parent view去处理它)。并且,通过从onTouchEvent()返回true,你将不会在onInterceptTouchEvent()中接收到以下任何事件并且所有触屏处理必须在onTouchEvent()中像正常情况一样发生。

3、  只要从onInterceptTouchEvent()返回false,接下来的每一个事件(截止到up并包括最后一个up)将会首先被传递到这里,然后到目标view的onTouchEvent()。

4、  如果从onInterceptTouchEvent()返回true,你将不会接收到任何以下事件:目标view将会接收到相同的事件但是带着ACTION_CANCEL的动作,所有以后的事件将会被传递到你的onTouchEvent()方法中并且不再在这里出现。

返回值:返回true从childernview那里偷取动作事件并通过onTouchEvent()把它们分发到这个ViewGroup。当前的目标view将会接收到一个ACTION_CANCEL事件,并且将来也不会再有消息被传递到这里。

ViewGroup类的onTouchEvent(MotionEvent event)分析

实现这个方法去处理触屏事件

如果事件被处理则返回true,没有被处理则返回false


基本的规则是:

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

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

3.       如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,那么后续的move, up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样传递给该ViewGroup的onTouchEvent()处理,注意,目标view将接收不到任何事件。

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

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

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载