在Android系统中,存在多种界面事件,如点击事件、触摸事件、焦点事件和菜单事件等,在这些界面事件发生时,Android界面框架调用界面控件的事件处理方法对事件进行处理。
Android系统界面事件的传递和处理遵循以下规则。
1.如果界面控件设置了事件监听器,则事件将先传递给事件监听器。如果界面控件没有设置事件监听器,界面事件则会直接传递给界面控件的其他事件处理方法。
2.即使界面控件设置了事件监听器,界面事件也可以再次传递给其他事件处理方法。是否继续传递事件给其他处理方法是由事件监听器处理方法的返回值决定的。
2.1如果监听器处理方法的返回值为true,表示该事件已经完成处理过程,不需要其他处理方法参与处理过程,这样事件就不会再继续进行传递。
2.2如果监听器处理方法的返回值为false,则表示该事件没有完成处理过程,或需要其他处理方法捕获到该事件,事件会被传递给其他的事件处理方法。
在MVC模型中,控制器根据界面事件(UI Event)类型不同,将事件传递给界面控件不同的事件处理方法。
·按键事件(KeyEvent)将传递给onKey()方法进行处理。
·触摸事件(TouchEvent)将传递给onTouch()方法进行处理。
Android界面框架支持对按键事件的监听,并能够将按键事件的详细信息传递给处理方法。为了处理控件的按键事件,先需要设置按键事件的监听器,并重载onKey()方法。
事件监听器
事件监听器是包含简单回调方法的view类的一个接口,当用户触发了一些注册过的事件时,android系统框架会自动调用相应的方法。
事件监听器包含以下几个方法:
onCLick()
来自View.onClickListener。当view被触摸,或者焦点在view上时,用户按了确认键或导航键。
onLongClick()
来自 View.onLongClickListener。当view被触摸超过1秒,或者焦点在view上,用户按了确认或导航键超过1秒时,方法被调用。
onFocysChange()
来自 View.onFocusChangeListener。当焦点离开view时被调用。
onKey()
来自 View.onKeylistener。按下或者弹起某个键时方法被调用。
onTouch()
来自 View.OnTouchListener。当用户操作屏幕时被调用,包括按下释放或者其他的操作。
onCreateContextMenu()
来自 View.onCreateContextMenuListener。当一个Context Menu菜单被建立时调用。