Android开发基础 事件处理

Android事件处理

1-基于监听的事件处理

基于监听的事件处理,其实就是为UI组件绑定事件监听器。
在事件监听处理模型中,主要涉及以下三个对象。
(1)Event Source(事件源):一般是指各个组件。
(2)Event(事件):一般指的是用户操作,该事件封装了组件上发生的各种特定事件。
(3)Event Listener(事件监听器):负责监听事件源所发生的事件,并对该事件做出响应。

首先我们简单介绍一下,事件的处理流程,首先是用事件监听器去监听事件源,当外动作触发事件源之后,会生成事件,事件监听器会获取事件,然后通过事件处理器对事件进行处理。
在这里插入图片描述
接下来,我们通过一个例子去演示一下,就是对按钮设置事件监听器,去处理按钮触发的事件。
准备活动:创建一个Project,在Project中创建一个Module,这个都是常规操作,不在赘述。
创建项目project的就是步骤File->new->new project ,根据提示next就可以。创建Module的步骤是File->new->new Module,然后根据提示next就可以。
我是创建了一个名称为demo的Module,如图所示。
在这里插入图片描述首先我打开activity_main.xml的Design界面,在设计见面中我们添加一个按钮布局,我们可以把TextView布局删掉,此处没有,添加一个按钮,代码如下:

  <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="单击" />

按钮的id为名称为button的按钮,按钮的文本名称是单击,按钮的宽和高是默认的包裹内容的。改好后的布局界面如图。
在这里插入图片描述下面我们在Main.Activity.java文件夹中,绑定按钮Id,设置监听器去监听,在Main.Activity.java文件夹中添加代码如下:我已在注释中解释了代码的含义。我用的是匿名内部类作为监听器。
注意:如果在添加代码后提示出错,把鼠标放在出错的地方,按钮快捷键Alt+Enter系统会自动为你导入缺省的包。

 Button button = (Button) findViewById(R.id.button) ; //绑定按钮Id,这个按钮名称一定要与布局文件中的一样
        button.setOnClickListener(new View.OnClickListener() { //设置按钮监听器,通过匿名内部类来实现
            @Override
            public void onClick(View view) { //Android studio自动重写Onclick 方法
                Toast.makeText(MainActivity.this,"单击了按钮", Toast.LENGTH_SHORT).show() ;//用Toast去显示按钮被点击了,显示时长为短暂
            }
        });

在Main.Activity.java文件夹中添加完代码后的界面如下
在这里插入图片描述好了一个按钮的监听就搞定了,下面我们运行一下,看看效果,点击图中所示,选中demo,点击绿色三角形运行,会弹出一个提示框,点击OK就可以了。
在这里插入图片描述大约一分钟之后,运行出界面,点击按钮后,有如下效果,代表监听成功。
在这里插入图片描述

2-基于回调的事件处理

其实就是处理哪一个回调事件就重写哪一个回调方法就可以了。
我们经常写的回调方法主要有以下几个:
(1)OnKeyDown():在该组件上按下某个按键触发
(2)OnTouchEvent():触发触摸屏时候触发
(3)OnKeyUp():松开某个键触发
当然不止这几个,还有长按某个键触发,触发轨迹球触发等。

下面我们来演示一个例子。

我们在Main.Activity.java文件夹中重写回调方法,代码如下

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        Toast.makeText(MainActivity.this, "按下", Toast.LENGTH_SHORT).show();
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        Toast.makeText(MainActivity.this, "抬起", Toast.LENGTH_SHORT).show();
        return super.onKeyUp(keyCode, event);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Toast.makeText(MainActivity.this, "触摸", Toast.LENGTH_SHORT).show();
        return super.onTouchEvent(event);

    }

分别是对OnKeyDown():在该组件上按下某个按触;OnTouchEvent():触发触摸屏时候触发;OnKeyUp():松开某个键触发三个回调方法的重写,重写后的Main.Activity.java文件夹的界面如下:
在这里插入图片描述下面我们运行一下,看看结果,点击绿色三角形运行,会弹出一个提示框,点击OK就可以了。
大约一两分钟,我们点击旁边音量的按键,会提示按下,你松开后,会提示抬起,你用鼠标单击触摸屏界面,它会显示触摸,如图所示,代表搞定了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上就是android事件处理的基本内容,如果对你有帮助,点个赞再走吧,谢谢!

发布了45 篇原创文章 · 获赞 28 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/nuist_NJUPT/article/details/105080532