Android中的事件处理机制

       Android手机的用户与应用程序之间的交互是通过事件处理来完成的。各控件在不同情况下触发的事件也不尽相同,所产生的事件对象也可能不同。

       从处理方法来说,Android的事件处理有“基于回调机制”(回调就是客户端程序Client调用服务程序Service中的某个函数A,然后服务程序Service又在某个时候反过来调用客户程序Client中的某个函数B,Server约定了B的接口规范)的处理方法和“基于监听接口事件”(将事件源与事件监听器联系在一起,就需要为事件源注册监听事件。当事件发生时,系统自动通知事件监听器处理相应的事件)的处理方法;从另一个角度来看,有使用事件监听器(Event Listeners)来处理事件的,也有的是使用Event Handlers来处理事件的。

      常见的事件监听器方法有:1.View.OnClickListener():当前View被点击时,或者当前View获得焦点时调用这个监听器方法,并触发其中的onClick(View v)方法。2.View.OnFocusChangeListener():当前View焦点变化时该方法被调用,并触发其中的onFocusChange()方法。3.   View.OnKeyListener():当前组件获得焦点,或者用户按下键时,调用该方法,并触发其中的onKey()方法。4. View.OnTouchListener():当触摸事件传递给当前组件时,注册在当前组件内部的OnTouchListener会被执行并触发其中的onTouch()方法。其中,onTouch方法的常用代码块如下:

public boolean onTouch (View v, MotionEvent event) {

   switch (event.getAction())  {

      case MotionEvent.ACTION_DOWN:

           //具体的处理逻辑

           break;

      case MotionEvent.ACTION_MOVE:

           //具体的处理逻辑

           break;

      case MotionEvent.ACTION_UP:

           //具体的处理逻辑

           break;

     }

    return false;

}

 

      

基于回调机制的事件处理方法之一------------onTouchEvent()方法:

onTouch是View中OnTouchListener接口中的方法,它处理View及其子类被touch时的事件;onTouchEvent()也是在View中定义的一个方法,处理传递到View的手势事件,包括ACTION_DOWN、ACTION_MOVE、ACTION_UP、ACTION_CANCEL四种事件。应用程序可以通过该方法处理手机屏幕的触摸事件。该方法一般出现在Activity中的位置是在onCreate(Bundle savedInstanceState)方法之后,在定义public boolean onTouchEvent (MotionEvent event)方法中,根据侦听得到的不同情况分别处理之。该方法一般在View中或Activity中重写。参数event为手机屏幕触摸事件封装类的对象,它封装了该事件的所有信息,如触摸的位置、类型(如屏幕被按下的MotionEvent.getAction()的值为MotionEvent.ACTION_DOWN;被抬起的MotionEvent.getAction()的值为MotionEvent.ACTION_UP;在屏幕中拖动时的MotionEvent.getAction()的值为MotionEvent.ACTION_MOVE)、时间等。该对象会在用户触摸手机屏幕时被创建。其返回值,当已经完整地处理了该事件且不希望其他回调方法再次处理时返回true,否则返回false。onTouchEvent方法的常用代码块如下:

public boolean onTouchEvent (MotionEvent event) {

      switch (event.getAction()){ //根据用户按键情况进行不同的处理

      case MotionEvent.ACTION_DOWN: //屏幕被按下

         //进行业务逻辑处理

          break;

      case MotionEvent.ACTION_MOVE: //移动

         //进行业务逻辑处理

         break;

      case MotionEvent.ACTION_UP: //屏幕被抬起

      //进行业务逻辑处理

         break;

         }

      return super.onTouchEvent(event);

 }

基于监听接口的事件处理方法之一------------------onClick()方法:

在触控模式下,它是在某个View上按下并抬起的组合动作;在键盘模式下它是某个View获得焦点后,点击确定键的事件。该接口对应的回调方法如下:public void onClick (View v)//注:参数v就是事件发生的事件源。代码中onClick(View v)调用监听器中相应的事件处理方法来处理事件并给出响应。onClick方法的常用代码块如下:

public void onClick(View v) {

      switch(v.getId()){//注意这里的getId()的用法

       case R.id.XX1:

                    //进行业务逻辑处理       

                   break;

      case R.id. XX2  :

                  //进行业务逻辑处理              

                 break;

      case R.id.button03:

                //进行业务逻辑处理              

                break; 

      }

   } 

如果使用了多个事件源,给每个事件源注册监听事件,可以使用上面的onclick()方法,针对不同的事件源分别进行业务处理,如果仅有一个事件源就没有必要使用switch了,直接写事件处理逻辑即可。 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值