Android UI 事件
在Java和android中,通过事件来与各种输入设备进行沟通。
事件是由OS产生的消息,当某个UI元素被用户以特定方式进行操作时,OS就会将事件消息发送给相应的View对象。
监听及事件处理
“处理”(Handle)与“处理程序”(Handler)View类处理UI事件
在应用程序中,每一个UI元素都是彼此不同的实例化View对象,每一个对象都包含专属于该View对象的事件。
在布局中,一个View对象是通过公共的回调(Callback)方法来与应用程序的其它部分进行沟通的,当某一个特定动作发生在该UI的View对象中时,Android就会调用指定的回调方法。
在Android中提供了一套事件处理接口。在View类中嵌套了这些事件接口,通过它们可以定义回调方法。因为,它们是OS的一部分,组成了View类及其所有的方法。在View类中嵌套的接口就是事件监听器。
事件回调方法:
事件监听器就是View类中的一个Java接口,里面包含了一个单独的回调方法。以下就是在Android中常用的回调方法:onClick():来自View.OnClickListener类,在触摸屏幕或者点击UI元素时触发。onLongClick():来自View.OnLongCliclListener类,触摸或按钮某个UI元素超过1秒触发。onKey():来自View.OnKeyListener类,按下或释放键盘时触发。onTouch():来自View.OnTouchListener类,在触摸、释放、手势事件时触发。onFocusChange():来自View.OnFocusChange类,在焦点改变时触发。onContextMenu():来自View.OnTouchListener类,上下文菜单。
事件焦点
当使用listView时,在view中添加button等控件,子控件会抢夺父控件的事件焦点,在父控件使用descendantFocusability属性设置其子控件不抢夺父控件事件焦点。
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点 blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点