Android界面事件机制
一. android界面事件分类:
1.KeyEvent
2.TouchEvent
3.TrackballEvent(现在不怎么使用了)
二. android界面事件的触发及分发
1.事件触发的两种方法:扩展view的时候回调事件函数(内), 注册事件监听器(外)
2.时间分发dispatchKeyEvent:keyEvent分发,touchEvent分发
keyEvent分发:当我们点击了一个按钮,就会发送一个消息到当前上下文,context又分发到当前窗体的一个实例,然后windows优先发送给输入法窗体,然后发送给rootView, 然后一层一层最终分发给获取focus的view。事件的处理是先处理又focus的view,然后一层一层往上。
touchEvent分发:当我们点击一个view,比如textview,系统就能快速定位到我们点击的view。
例如在当前窗体点击menu弹出一个popupwindow,第二次点击menu就不会触发任何事件。因为此时的焦点已经移动到了popupwindow上面,但是popupwindow它是window,而没有继承view,所以它自己没有onkeyDown或onkey或dispatchKeyEvent事件,所以我们要为popupwindow的子view设置setFocusableInTouchMode(true)属性,然后给子view设置按键监听才能响应popupwindows窗口消失的事件。
最后再推荐一个小工具,android sdk下面的hierarchyviewer,这个工具现在已经用android device monitor代替了,这个工具可以查看当前屏幕下的布局层级关系,分析布局的合理性很有用
这些都是很基础很简单的东西,在此纪录下来学习的过程。
                    
                
                
            
        
浙公网安备 33010602011771号