Android Activity 和 ViewGroup中事件触发和传递机制_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android Activity 和 ViewGroup中事件触发和传递机制

Android Activity 和 ViewGroup中事件触发和传递机制

 2017/3/17 5:31:48  ganchuanpu  程序员俱乐部  我要评论(0)
  • 摘要:1.在只有Activity的情况:1)Touch事件触发流程:首先触发dispatchTouchEvent然后触发onUserInteraction再次onTouchEvent如果是点击的话,紧跟着下列事件(点击分俩步,ACTION_DOWN,ACTION_up)触发dispatchTouchEvent再次onTouchEvent当ACTION_up事件时不会触发onUserInteraction(可查看源代码)2
  • 标签:事件 android view Activity viewgroup

1.在只有Activity的情况:

1)Touch事件触发流程:

class="brush:csharp;gutter:true;">首先触发dispatchTouchEvent
然后触发onUserInteraction
再次onTouchEvent
如果是点击的话,紧跟着下列事件(点击分俩步,ACTION_DOWN,ACTION_up)
触发dispatchTouchEvent
再次onTouchEvent
当ACTION_up事件时不会触发onUserInteraction(可查看源代码)

2)键盘事件触发流程

首先触发dispatchKeyEvent
然后触发onUserInteraction
再次onKeyDown

如果按下紧接着松开,则是俩步
紧跟着触发dispatchKeyEvent
然后触发onUserInteraction
再次onKeyUp
注意与触摸不同,当松开按键时onUserInteraction也会触发。

总之:  Activity.dispatchTouchEvent(MotionEvent) - 这允许你的活动可以在分发给窗口之前捕获所有的触摸事件。(同理 dispatchKeyEvent)

 

2.Activity里有一个Layout,在Layout里有个按钮情况:

如果在按钮上触发一个CLICK事件,那么事件传递流程:

首先触发ACTIVITY的dispatchTouchEvent
然后触发ACTIVITY的onUserInteraction

然后触发LAYOUT的dispatchTouchEvent
然后触发LAYOUT的onInterceptTouchEvent

然后触发BUTTON的onTouch(这是一个ACTION_DOWN事件)

紧跟着是一个ACTION_UP事件

触发ACTIVITY的dispatchTouchEvent
注意不再触发ACTIVITY的onUserInteraction,因为他对ACTION_UP不起作用。

然后触发LAYOUT的dispatchTouchEvent
然后触发LAYOUT的onInterceptTouchEvent

然后触发BUTTON的onTouch
最后触发BUTTON的onClick.

如果你在ONTOUCH事件里返回true,消费了此事件,那么ONCLICK将不会被响应

但是如果你不写ONCLICK事件,而ONTOUCH事件返回FLASE

3.总结:

Android事件触发流程:

-------------------------------------------------------------------

首先触发ACTIVITY的dispatchTouchEvent

然后触发ACTIVITY的onUserInteraction

然后触发LAYOUT的dispatchTouchEvent

然后触发LAYOUT的onInterceptTouchEvent

-------------------------------------------------------------------

  

  

  

上一篇: MVC开发T4代码生成之一----文本模板基础 下一篇: 没有下一篇了!
发表评论
用户名: 匿名