上一篇文章介绍了事件处理的第一种方法--基于回调的事件处理,接下来说一下第二种--基于监听的事件处理。对于Android基于监听的事件处理而言,主要的做法就是为Android界面组件绑定特定的事件监听器(Listener)。
1. OnClickListener接口:
功能:该接口处理的是点击事件。在触控模式下,是在某个View上按下并抬起的组合动作,而在键盘模式下,是某个View获得焦点后点击确定键或者按下轨迹球事件。
对应的回调方法:public void onClick(View v)
说明:需要实现onClick方法,参数v便为事件发生的事件源。
2. OnLongClickListener接口:
功能:OnLongClickListener接口与之前介绍的OnClickListener接口原理基本相同,只是该接口为View长按事件的捕捉接口,即当长时间按下某个View时触发的事件。
对应的回调方法:public boolean onLongClick(View v)
说明:需要实现onLongClick方法。
参数v:参数v为事件源控件,当长时间按下此控件时才会触发该方法。
返回值:该方法的返回值为一个boolean类型的变量,当返回true时,表示已经完整地处理了这个事件,并不希望其他的回调方法再次进行处理;当返回 false时,表示并没有完全处理完该事件,更希望其他方法继续对其进行处理。
3. OnFocusChangeListener接口:
功能:OnFocusChangeListener接口用来处理控件焦点发生改变的事件。如果注册了该接口,当某个控件失去焦点或者获得焦点时都会触发该接口中的回调方法。
对应的回调方法:public void onFocusChange(View v, Boolean hasFocus)
说明:需要实现onFocusChange方法。
参数v:参数v便为触发该事件的事件源。
参数hasFocus:参数hasFocus表示v的新状态,即v是否是获得焦点。
4. OnKeyListener接口:
功能:OnKeyListener是对手机键盘进行监听的接口,通过对某个View注册该监听,当View获得焦点并有键盘事件时,便会触发该接口中的回调方法。
对应的回调方法:public boolean onKey(View v, int keyCode, KeyEvent event)
说明:需要实现onKey方法。
参数v:参数v为事件的事件源控件。
参数keyCode:参数keyCode为手机键盘的键盘码。
参数event:参数event便为键盘事件封装类的对象,其中包含了事件的详细信息,例如发生的事件、事件的类型等。
5. OnTouchListener接口:
功能:OnTouchListener接口是用来处理手机屏幕事件的监听接口,当为View的范围内触摸按下、抬起或滑动等动作时都会触发该事件。
对应的回调方法:public boolean onTouch(View v, MotionEvent event)
说明:需要实现onTouch方法。
参数v:参数v同样为事件源对象。
参数event:参数event为事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。
6. OnCreateContextMenuListener接口:
功能:OnCreateContextMenuListener接口是用来处理上下文菜单显示事件的监听接口。该方法是定义和注册上下文菜单的另一种方式。
对应的回调方法:public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo info)
说明:需要实现onCreateContextMenu方法。
参数menu:参数menu为事件的上下文菜单。
参数v:参数v为事件源View,当该View获得焦点时才可能接收该方法的事件响应。
参数info:info对象中封装了有关上下文菜单额外的信息,这些信息取决于事件源View。
该方法会在某个View中显示上下文菜单时被调用,开发人员可以通过实现该方法来处理上下文菜单显示时的一些操作。其使用方法与前面介绍的各个监听接口没有任何区别。