Android 事件处理

    事件就是用户对图形的操作,在android手机和平板电脑上,主要包含物理按键事件和触摸屏事件两类。物理按键事件包含:按下、抬起、长按等;触摸屏事件主要包含按下、抬起、滚动、双击等。

    在View中提供了onTouchEvent()方法,可以重写该方法来处理触摸屏事件,适用于重写组件的场景;android中还提供了setOnTouchListener()方法为组件设置监听器来处理触摸屏事件。

    在android中提供啦两种方式的事件处理,一种是基于监听的事件处理,一种是基于回调的事件处理。

一、基于监听的事件处理

   实现基于监听的事件处理,主要做法就是为android的UI组件绑定特定的事件监听器,在事件监听的处理模型中,主要有三个对象:

   ①、Event Source(事件源):即产生事件的来源,通常是各种组件,例如:按钮、窗口、菜单等

   ②、Event(事件):事件中封装了UI组件上发生的特定事件的具体信息,如果事件需要获取UI组件上所发生事件的相关信息,一般通过Event对象来传递

   ③、Event Listener(事件监听器):监听事件源所发生的事件,并对不同的事件做出相应的相应

二、基于回调的事件处理

    实现基于回调的事件处理,就是重写Android组件特定的回调方法或重写Activity的回调方法。为了使用回调机制来处理GUI组件(图形用户界面)上所发生的事件,需要为该组件提供对应的事件处理方法,可以通过继承GUI组件类,并重写该类的事件处理方法来实现。

    View类中包含的一些事件处理的回调方法:

     ①、Boolean onKeyDown(int keyCode,keyEvent event)  当用户在该组件上按下某个按键时触发

     ②、Boolean onKeyLongPress(int keyCode,KeyEvent event)  当用户在该组件上长按某个按键时触发

     ③、Boolean onKeyShortcut(int keyCode,KeyEvent event)  当一个键盘快捷键事件发生时触发

     ④、Boolean onKeyUp(int keyCode,KeyEvent event)  当用户在该组件上松开某个按键时触发

     ⑤、Boolean onTouchEvent(MotionEvent event)  当用户在该组件上触发触摸屏事件时触发

     ⑥、boolean onTrackballEvent(MotionEvent event) 当用户在该组件上触发轨迹球事件时触发

一般来说,基于回调的事件处理方式可用于处理一些通用性的事件,事件处理的代码会比较简洁。但对于某些特定的事件,无法采用基于回调的事件处理方式实现时,就只能采用基于监听的事件处理方式。

三、物理按键事件处理

   ①、Android设备可用物理按键及其触发事件

   音量键  KEYCODE_VOLUME_UP / KEYCODE_VOLUME_DOWN 控制当前上下音量,如音乐播放器、手机铃声、通话音量

   返回键  KEYCODE_BACK   返回到前一个界面

   菜单键  KEYCODE_MENU   显示当前应用的可用菜单

   ②、在android中处理物理按键事件时,常用的回调方法:

    onKeyUp()  当用户松开某个按键时触发该方法

    onKeyDown() 当用户按下(未松开)某个按键时触发该方法

    onkeyLongPress() 当用户长按某个按键时触发该方法

    ③、获取系统时间:system.currentTimeMillis()

四、触摸屏事件处理

   ①、单机事件

     在手机应用中,经常需要实现在屏幕中单机某个按钮或组件执行一些操作,这时就需要通过单机事件来完成。在处理单机事件时,可以通过为组件添加单击事件监听器的方法来实现。android为组件提供了setOnClickListener()方法,用于为组件设置单击事件监听器。该方法的参数是一个View.OnClickListener接口的实现类对象。View.OnClickListener接口定义如下:

   

1 pubic static interface View.OnClickListener{
2     public void onClick(View v);
3 
4 }

  在实现View.OnClickListener接口时,需要重写onClick()方法。当单击事件触发后,将调用onClick()方法执行具体的事件处理操作。

ag:为button的按钮添加一个单击事件监听器,并且实现单击该按钮时弹出消息提示显示:单击了按钮,代码如下:

   

Button button =new Button(this)
button.setOnClickListener(new View.OnClickListener(){

  @Override
  public void onClick(View v){

Toast.makeText(MainActivity.this,"单击了按钮",Toast.LENGTH_SHORT).show();
    }
});

   ②、长按事件

    长按事件不同于单击事件,长按事件需要长按某一个组件2秒之后才会触发。在处理长按事件时,可以通过为组件添加长按事件监听器的方法来实现。android为组件提供了setOnLongClickListener()方法,用于为组件设置长按事件监听器,该方法的参数是View.OnLongClickListener接口的实现类对象,接口定义如下:

1 public static interface View.OnLongClickListener{
2 
3    public void onLongClick(View v)
4 
5 }

在实现View.OnLongClickListener接口时,需要重写onLongClick()方法。当长按事件触发后,将调用onLongClick()方法执行具体的事件处理操作。

转载于:https://www.cnblogs.com/SM-Elephant/p/9831214.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值