原创 Android中的事件处理之点击事件

2021-4-23 16:44 2268 16 3 分类: 软件与OS 文集: android studio

Android 的图形界面(UI)开发中,有两个非常重要的内容一个是控件的布局,另个就是控件的事件处理。Android中的常用事件有点击事件、长按事件、触摸事件、焦点事件、按键事件下拉列表的选中事件、单选按钮的改变事性等。对于事件的处理,基本上可以总结为 3 个步骤

步骤一: 获取触发事件的对象,比如点击了一个 Button,如果要对这个点击事件进行处理,就需要获取 Button 的对象。

步骤二:实现一个对应的事件处理接口。每个事件都有对应的事件处理接口,在事件处理中必须要实现事件处理接口,同时要实现其中的事件处理方法。在一个事件处理接口的实现类中可以处理多个事件。

步骤三: 用获取的控件对象调用该控件的某个事件监听方法,将第二步实现的接口类的对象作为参数传入,并对该事件进行注册。

点击事件

点击事件,顾名思义就是点击了某个控件而触发的事件。点击事件常见于 Button 按钮,当然,TextViewImageView 等控件中也有使用。另外,布局管理器(如LinearLayout等)也是可以有点击事件的、下面将以 ButtonTextView 为实例来进行讲解。

Activity 对应的布局文件代码

xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
<Button
        android:id="@+id/button_click"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="点击button按钮"/>
 <TextView
        android:id="@+id/text_click"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="点击textView"/>
LinearLayout>

MainActivity中处理的代码:

就像前所说的分3步来处理事件第一步使用 findViewByld()方法获取 Button 按钮的对象;第二步让 Activity 实现点击事件的处理接口 View.OnClickListener,并实现 onClickO)方法,在此方法中响应具体的点击事件;第三步调用 setOnClickListener()点击事件的监听方法,并将 View.OnClickListener 接口实现类的对象传入(实例中是用 Activity 实现的,所以传入了 this对象)。

对点击事件的处理都是要在 onClick()方法中进行编写的,实例在点击之后弹出一个 Toast进行提示。如果只有一个点击事件,就可以直接在方法内编写响应程序,但是当实例中有两个(或多个)需要进行处理的点击事件时则需要使用一个 switch 根据它们的 id 进行判断。在第三步调用 setOnClickListener()方法时,系统会对 View 进行注册,所以在 onClick()方法中可以从 view.getId()方法获取对应的 View 控件的 id

运行程序,点击 Button 按钮的效果如下图所示:

                          点击Button按钮效果图                                                       点击TextView按钮效果图

其实,在处理点击事件时,实现事件处理接口的方式有 3 种,实例中的处理方式是在实际开发中最常用的。下面简单介绍其他两种方式。

1)匿名内部类的方式

直接在控件对象调用 setOnClickListenerO方法时以匿名内部类的方式传入事件处理接口的对象。修改MainActivity的代码如下:

使用这种方式就需要在Button按钮和TextView中都这样处理。如果不是两个,同时需要的点击事件特别多,就会使得代码冗余,让 initView()方法过于庞大,同时可读性降低。选择使用实例中的方法就会显得很清晰,同时代码简洁、可读。当然,如果需要处理的事件只有一个或者几个的话,使用此种方式会相当简单。只是在真正的开发中只有一个事件需要处理的情况相对较少,所以实例中的处理方式才是应用最广泛的。

2)内部类的方式

这种方式和匿名内部类方式不同的是,它选择在 Activity 内部创建一个内部类,并在内部类内实现 onClickView view)方法。修改MainActivity代码如下:

使用这种方式,和实例中的方式并无区别,只是一个用 Activity 实现了事件处理接口,一个使用了内部类的方式。当然,也可以用普通类的方式,和内部类效果一样,但是在代码的内聚性上会大打折扣。当然如果遇到的工程相对复杂,那么为了解耦有时也会使用普通类的方式,不过非常少见。

只有理解了上面 3 种实现事件处理接口的方式,在开发中才能根据需要选择不同的方式。其实,不只是点击事件,其他事件实现事件处理接口也是同样的。

源码下载请关注大鸟科创空间,回复andriod studio进行下载

作者: 大鸟科创空间, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3949041.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

curton 2021-4-26 16:17

相关推荐阅读
大鸟科创空间 2022-02-14 17:42
生日快乐HTML浪漫网页制作源码
对象生日快到了,赶快下载去给ta一个惊喜吧。解压后里面有整个项目和使用说明。这个代码有背景音乐(可以自己更改),有自转相册(可以改成对象照片)如下是效果截图,用鼠标滑动界面会有爱心划过,下滑可以循环播...
大鸟科创空间 2022-01-18 18:06
Android之WebView用法
除了HTTP通信与 Socket 通信两种主要的网络技术外,在 Android 中还提供了一种加载和显示网页的技术—WebView。这可以让我们去处理一些特殊的需求,比如像微信那样在应用程序里展示网页...
大鸟科创空间 2022-01-07 14:18
Android之Socket实例
    Socket(套接字)是对 TCP/IP 协议的封装和应用,根据底层封装协议的不同,Socket 的类型可以分为流套接字(streamsocket)和数据报套接字(data...
大鸟科创空间 2021-12-24 14:38
Android之本地广播的使用
前面我们发送和接收的广播全部属于系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且我们也可以接收来自于其他任何应用程序的广播。这样就很容易会引起安全性的问题,比如说我们发送的一些携带关键性数...
大鸟科创空间 2021-12-15 12:50
自定义广播实例
我们应该已经学会了通过广播接收者来接收系统广播的内容,但是在实际开发中,仍需要自定义一些广播。下面我们就来讲解如何在应用程序中发送自定义的广播。发送广播很简单,只需要声明一个意图,然后使用Contex...
大鸟科创空间 2021-12-07 13:04
Android之动态注册广播实例
Android内置了很多系统级别的广播,我们可以在应用序中通过监听这些广播来得到各种系统的状态信息,比如手机开机完成后会发出一条广播、电池的电最发生变化会发出一条广播、时间或时区发生改变也会发出一条广...
我要评论
1
16
关闭 站长推荐上一条 /2 下一条