您的位置:首页 > 其它

关于view的Touch事件的一些理解

2016-07-28 10:24 369 查看
关于view的Touch事件的一些理解做如下笔记

一个view接收到touch事件,首先会传入到该view的dispatchTouchEvent()方法中

dispatchTouchEvent中主要逻辑

1.判断该view是否设置了onTouchLIstener

2.在设置了onTouchListener的前提下继续判断onTouch的返回值

3.如果onTouch返回true,则ondispatchTouchEvent返回true.

4.如果onTouch返回false,进入onTouchEvent方法

5.在onTouchEvent的ACTION_UP方法中处理了onclick事件

总结:

onTouch()与onTouchEvent()以及click三者的区别和联系

     1 onTouch()与onTouchEvent()都是处理触摸事件的API

     2 onTouch()属于TouchListener接口中的方法,是View暴露给用户的接口便于处理触摸事件,而onTouchEvent()是Android系统自身对于Touch处理的实现

     3 先调用onTouch()后调用onTouchEvent()。而且只有当onTouch()未消费Touch事件才有可能调用到onTouchEvent()。即onTouch()的优先级比onTouchEvent()的优先级更高。

     4 在onTouchEvent()中处理ACTION_UP时会利用ClickListener执行Click事件。所以Touch的处理是优先于Click的

     5 简单地说三者执行顺序为:onTouch()–>onTouchEvent()–>onClick()

     View没有事件的拦截(onInterceptTouchEvent( )),ViewGroup才有,请勿混淆
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: