欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android安卓——事件响应

程序员文章站 2022-06-08 18:40:41
...

本次学习的是安卓应用中最常使用的事件响应。所谓事件响应无时无刻不在手机应用上发生,划开锁屏、拨号、查找联系人、发送信息等。只要你对屏幕有所动作都会产生事件。
在了解事件处理原理之后,针对单击事件、长按事件、焦点改变事件、键盘事件、触摸事件的基本操作,进行详细的解说。

一、事件处理原理

1、涉及的三个概念:

1)事件(Event):表示在图形界面操作的描述,通常是封装成各种类。
2)事件源(Event Source):指事件发生的场所,通常是指各个控件。
3)事件监听器(Event Listener):指接收事件对象并对其进行处理的对象,事件处理一般是一个实现某些特定接口类创建的对象。

2、事件处理模型

在Android的事件处理中分为两种:基于监听接口的事件、基于回调的事件处理。

1)基于监听接口的事件处理


  • 获取普通界面组件
  • 实现事件监听类。该监听类是一个特殊的java类,必须实现一个XXXListener接口
  • 调用事件源的setXXXListener方法注册事件监听器

Android中提供的基于监听接口的事件处理模型:
OnClickListener接口:单击事件
OnLongClickListener接口:长按事件
OnFocusChangeListener接口:焦点改变事件
OnKeyListener接口:键盘事件
OnTouchListener接口:触摸事件
OnCreateContextMenuListener接口:上下文菜单事件

2)基于回调机制的事件处理

Android平台中,每个View都有自己的处理事件的回调方法,可以通过重写View中的这些回调方法来实现需要的响应事件,Android提供了以下回调方法供用户使用:
1)onKeyDown:用来捕捉手机键盘被按下的事件。
2)onKeyUp:用来捕捉手机键盘按键抬起的事件。
3)onTouchEvent:用来处理手机屏幕的触摸事件。
4)onTrackBallEvent:用来处理轨迹球事件。
5)onFocusChanged:用来来处理焦点改变的事件。

3、注册监听器的方式

1、使用内部匿名类

protected void onCreate(Bundle savedInstanceState){
       setContentView(R.layout.activity_main);
       b1 = (Button)findViewById(R.id.button)'
       b1=setOnClickListener(new View.OnClickListener(){
            public void onClick(View view){
            TextView textview = (TextView)findViewById(R.id.textView);
            textview.setTextSize(25);
           }
});

2、Activity中直接实现监听器接口

public class ExampleActivity extends Activity implements OnClickListener{
      public void onClick(View v){
          }
}

3、在布局文件layout.xml文件直接指定事件处理方法

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="sendMessage"/>

二、主要事件

1、单击事件OnClickListener
  • 接口是:View.ONClickListener
2、长按事件OnLongClickListener
  • 接口是:View.OnLongClickListener
3、焦点改变事件OnFocusChangeListener
  • 接口是:View.OnFocusChangeListener

常用于对输入格式,内容等的监听。

4、键盘事件OnKeyListener
  • 接口是:View.OnKeyListener

软键盘一般不会触发本事件。

5、触摸事件OnTouchEvent
  • 接口是:View.OnTouchListener
    一下三钟情况有OnTouchEvent方法处理。
    (1)屏幕被按下:MotionEvent.getAction()值为MotionEvent.ACTION_DOWN
    (2)屏幕被抬起:MotionEvent.getAction()值为MotionEvent.ACTION_UP
    (3)在屏幕上拖动:先判断MotionEvent.getAction()值是否为MotionEvent.ACTION_MOVE在进行处理
6、选择改变事件OnCheckedChange
  • 接口是:View.OnCheckChangeListener

在RadioGruop、RadioButton、CheckBox等控件上进行实践的处理操作。