首页 > 其他 > 详细

笔记KeyEvent 和 TouchEvent在 Activity和View中传递的顺序

时间:2015-08-27 13:41:15      阅读:477      评论:0      收藏:0      [点我收藏+]

由于一个电视机 Key事件传递出现了部分问题,但是五位方向键有时候出现问题

所以使用Activity完全接管了key事件的传递, 自己来控制焦点的变化和五位方向键的按下处理逻辑

在此温习一下key事件的传递, 日志如下

Key事件, 是从Activity分配下去, 然后View先处理, 最后Activity处理

技术分享

Touch 事件

技术分享



View.java 只有  dispatchTouchEvent   和onTouchEvent

VG 只有dispatchTouchEvent 和 onInterceptTouchEvent  多一个 dispatchTransformedTouchEvent VG.java没有ouTouchEvent, VG的onTouchEvent实际上是VG继承的View的, touch的处理和View也是一样的.


完整流程: 

1.VG.dispatchTouchEvent -> 


2.VG.onInterceptTouchEvent -> 如果被拦截了, 那就直接执行我自己的onTouch即可(也就是 super.dispatchTouchEvent)


3.VG.dispatchTransformedTouchEvent ->  

如果onInterceptTouchEvent 返回的不是true, 也就是没有被拦截, 那么就开始进行向孩子分发, 如果没有孩子, 就执行我自己View的Touch

两种情况如下:
 
4. 遍历这个VG中所有的孩子:

A 如果这个VG中没有孩子, 调用这个VG的View的dispatchTouchEvent也就是super.dispatchTouchEvent

B 否则, 执行孩子们的onTouch.

5.super.dispatchTouchEvent最后会执行到: 

mOnTouchListener.onTouch

6. onTouchEvent(event)

技术分享



最最后, WMS会调用Activity的onTouchEvent





笔记KeyEvent 和 TouchEvent在 Activity和View中传递的顺序

原文:http://my.oschina.net/sfshine/blog/497773

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!