1、概述
上节介绍了android tv app 与android mobile app 的一些表现形式的不同。在实际编程中需要很多的焦点处理,而焦点处理有经常是在事件传递函数内处理的。所以本节做个android 事件传递与焦点处理的小结。另既然描述到android事件传递不可避免就涉及到了android手势拦截。这也是对原有知识认识的一个补充,因为之前涉及到安卓事件传递就是为了做手势拦截,以至于当看到代码在手势分发函数里处理tv的焦点,与界面移动填充时。一时有点迷糊,为什么是写在dispathKeyEvent里不是写在onInterceptTouchEvent里。原因就是因为这是在事件传递流程里处理焦点,而不是在事件传递流程里拦截事件。
2、Android简单的事件传递流程
提到android事件传递流程肯定会涉及到几个以下几个函数
函数
说明
备注
dispathTouchEvent (MotionEvent ev)
事件分发(手势分发)
触摸屏-手机
dispatchKeyEvent(KeyEvent event)
事件分发
遥控- tv
onInterceptTouchEvent
事件拦截(手势拦截)
返回true: 事件被拦截,事件传递给自己的
onTouchEvent
返回false:事件继续传递
ViewGroup才有
onTouchEvent
事件处理
返回true:事件被消费终止传递
返回false:继续传递
表1
Android事件传递有两种事件,一种是触摸屏的触摸事件,一种就是按键事件&