Android中的事件处理之点击事件
在 Android 的图形界面(UI)开发中,有两个非常重要的内容∶一个是控件的布局,另个就是控件的事件处理。Android中的常用事件有点击事件、长按事件、触摸事件、焦点事件、按键事件—下拉列表的选中事件、单选按钮的改变事性等。对于事件的处理,基本上可以总结为 3 个步骤∶
步骤一: 获取触发事件的对象,比如点击了一个 Button,如果要对这个点击事件进行处理,就需要获取 Button 的对象。
步骤二:实现一个对应的事件处理接口。每个事件都有对应的事件处理接口,在事件处理中必须要实现事件处理接口,同时要实现其中的事件处理方法。在一个事件处理接口的实现类中可以处理多个事件。
步骤三: 用获取的控件对象调用该控件的某个事件监听方法,将第二步实现的接口类的对象作为参数传入,并对该事件进行注册。
点击事件
点击事件,顾名思义就是点击了某个控件而触发的事件。点击事件常见于 Button 按钮,当然,TextView、ImageView 等控件中也有使用。另外,布局管理器(如LinearLayout等)也是可以有点击事件的、下面将以 Button与TextView 为实例来进行讲解。
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)匿名内部类的方式
直接在控件对象调用 setOnClickListener(O方法时以匿名内部类的方式传入事件处理接口的对象。修改MainActivity的代码如下:
使用这种方式就需要在Button按钮和TextView中都这样处理。如果不是两个,同时需要的点击事件特别多,就会使得代码冗余,让 initView()方法过于庞大,同时可读性降低。选择使用实例中的方法就会显得很清晰,同时代码简洁、可读。当然,如果需要处理的事件只有一个或者几个的话,使用此种方式会相当简单。只是在真正的开发中只有一个事件需要处理的情况相对较少,所以实例中的处理方式才是应用最广泛的。
(2)内部类的方式
这种方式和匿名内部类方式不同的是,它选择在 Activity 内部创建一个内部类,并在内部类内实现 onClick(View view)方法。修改MainActivity代码如下:
使用这种方式,和实例中的方式并无区别,只是一个用 Activity 实现了事件处理接口,一个使用了内部类的方式。当然,也可以用普通类的方式,和内部类效果一样,但是在代码的内聚性上会大打折扣。当然如果遇到的工程相对复杂,那么为了解耦有时也会使用普通类的方式,不过非常少见。
只有理解了上面 3 种实现事件处理接口的方式,在开发中才能根据需要选择不同的方式。其实,不只是点击事件,其他事件实现事件处理接口也是同样的。
Android中的事件处理之点击事件相关推荐
- android webview 自动点击事件,Android中的WebView布局点击事件的方法
继承WebView自定义一个MyWebView,然后重载它的onTouchEvent方法,就可以解决了. public class MyWebView extends WebView{ public ...
- Android菜鸟的成长笔记(11)——Android中的事件处理
原文: [置顶] Android菜鸟的成长笔记(11)--Android中的事件处理 Android提供了两种方式来处理事件,一个是基于回调的事件处理,另一个是基于监听的事件处理,举个例子: 基于回调 ...
- Android中的事件处理总结
Android中的事件处理总结 Android系统对动作做出的响应机制就是事件处理.Android提供了两种事件处理机制. 基于监听的事件处理机制 基于回调的事件处理机制 一.基于监听的事件处理机制 ...
- android通知栏的点击事件,Android监听消息通知栏点击事件
Android监听消息通知栏点击事件 使用BroadCastReceiver 1 新建一个NotificationClickReceiver 类,并且在清单文件中注册!! public class N ...
- Android 动态添加标签及其点击事件
在做Android开发的时候,会遇到动态添加标签让用户选择的功能,所以自己写了个例子,运行效果图如下. 标签可以左右滑动进行选择,点击的时候,会弹出toast提示选择或者取消选择了哪个标签.通过动态添 ...
- iostext添加点击事件_iOS开发小技巧 - label中的文字添加点击事件
Label中的文字添加点击事件 以前老师讲过类似的功能,自己懒得回头看了,找了很多第三方的,感觉这个小巧便利,作者只是扩展了分类,实现起来代码也少.先来个效果图 自己的项目,直接上代码 - (void ...
- Android在WebView中给图片设置点击事件
好久没有更新博客了,今天来个小知识点.我们知道在WebView中加载的是Html也面,在开发中都是Web前端人员写好以后给个链接我们去用webView进行loadUrl.但是有时突然产品想让你把加载回 ...
- Android 中Touch(触屏)事件传递机制
版本:2.0 日期:2014.3.21 2014.3.29 版权:© 2014 kince 转载注明出处 一.基本概念 在实际开发中,经常会遇到与触屏事件有关的问题,最典型的一个就是滑动冲突.比如在使 ...
- Android中的事件处理研究
处理用户界面事件Handling UI Events 在Android上,不止一个途径来侦听用户和应用程序之间交互的事件.对于用户界面里的事件,侦听方法就是从与用户交互的特定视图对象截获这些事件.视图 ...
最新文章
- Chapter 2 Open Book——29
- 二十四、死锁的处理策略---检测和解除
- 你知道吗?Workspot属于二级VDI平台?
- -i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译
- jquery datatable的详细用法
- web容器(02):tomcat配置监控
- qq收不到oracle邮件,腾讯企业邮箱发送邮件失败
- 【转载】浅谈 看图软件 的设计与实现
- 手动安装lzop压缩工具 - JerryMo06的专栏 - 博客频道 - CSDN.NET
- OpenGL ES 加载3D模型
- Cglib 如何实现多重代理?
- 数据迁移其实是很难的
- 树莓派_360wifi2_佳能MP236打印机
- Delphi修改FMX Label字体颜色
- svn的安装出现报错问题解决办法
- 先定个小目标,免费360度评价(评估)反馈系统上线,开放部分源码
- 关于rem移动端 html字体大小自适应设置的问题
- 再谈6大国产CPU处理器
- 我国工业自动化市场现状分析报告
- 会声会影2022试用版 智能、快速、简单的视频剪辑软件