上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本期继续来学习其他四种事件监听器。

Android零基础入门第34节:Android中基于监听的事件处理_第1张图片

一、使用内部类作为事件监听器

和上面的匿名内部类不同,使用内部类可以在当前类中复用该监听器类;因为监听器类是外部类的内部类,所以可以自由访问外部类的所有界面组件,这也是内部类的两个优势。

接下来通过一个简单的示例程序来学习Android使用内部类作为事件监听器。

继续使用WidgetSample工程,在app/main/res/layout/目录下创建event_inner_class_layout.xml文件,在其中填充如下代码片段:

Android零基础入门第34节:Android中基于监听的事件处理_第2张图片

然后在java包下创建EventListenerInnerClassActivity.java文件,加载上面新建的布局文件,使用内部类监听事件,需要修改一下界面交互代码,具体代码如下:

Android零基础入门第34节:Android中基于监听的事件处理_第3张图片

修改AndroidManifest.xml文件中启动的Activity为EventListenerInnerClassActivity,具体代码如下:

Android零基础入门第34节:Android中基于监听的事件处理_第4张图片

运行程序,点击按钮,可以看到下图所示界面效果。

Android零基础入门第34节:Android中基于监听的事件处理_第5张图片

二、使用外部类作为事件监听器

使用外部类定义事件监听器类的形式比较少见,主要因为如下两个原因。

事件监听器通常属于特定的GUI界面,定义成外部类不利于提高程序的内聚性。

外部类形式的事件监听器不能自由访问创建GUI界面的类中的组件,编程不够简洁。

但如果某个事件监听器确实需要被多个GUI界面所共享,而且主要是完成某种业务逻辑的实现,则可以考虑使用外部类形式来定义事件监听器类。

接下来通过一个简单的示例程序来学习Android使用外部类作为事件监听器。

继续使用WidgetSample工程,在app/main/res/layout/目录下创建event_outer_class_layout.xml文件,在其中填充如下代码片段:

Android零基础入门第34节:Android中基于监听的事件处理_第6张图片

然后新建一个监听器BtnClickListener类,具体代码如下:

Android零基础入门第34节:Android中基于监听的事件处理_第7张图片

然后在java包下创建EventListenerOuterClassActivity.java文件,加载上面新建的布局文件,使用外部类监听事件,需要修改一下界面交互代码,具体代码如下:

Android零基础入门第34节:Android中基于监听的事件处理_第8张图片

修改启动的Activity,然后运行程序,点击按钮,可以看到下图所示界面效果。

Android零基础入门第34节:Android中基于监听的事件处理_第9张图片

实际上不推荐将业务逻辑实现写在事件监听器中,包含业务逻辑的事件监听器将导致程序的显示逻辑和业务逻辑耦合,从而增加程序后期的维护难度。

如果确实有多个事件监听器需要实现相同的业务逻辑功能,则可以考虑使用业务逻辑组件来定义业务逻辑功能,再让事件监听器来调用业务逻辑组件的业务逻辑方法。

三、直接使用Activity作为事件监听器

这种形式使用Activity本身作为监听器类,可以直接在Activity类中定义事件处理器方法,这种形式非常简洁。但是这样存在两个问题。

这种形式可能造成程序结构混乱,Activity的主要职责应该是完成界面初始化工作,但此时还需包含事件处理器方法,从而引起混乱。

如果Activity界面类需要实现监听器接口,让人感觉比较怪异。

接下来通过一个简单的示例程序来学习Android直接使用Activity作为事件监听器。

继续使用WidgetSample工程,在app/main/res/layout/目录下创建event_activity_class_layout.xml文件,在其中填充如下代码片段:

Android零基础入门第34节:Android中基于监听的事件处理_第10张图片

然后在java包下创建EventListenerActivityClassActivity.java文件,加载上面新建的布局文件,为了监听登录按钮的点击事件,在Java代码中为其添加点击事件监听器,具体代码如下:

Android零基础入门第34节:Android中基于监听的事件处理_第11张图片

修改启动的Activity,然后运行程序,点击按钮,可以看到下图所示界面效果。

Android零基础入门第34节:Android中基于监听的事件处理_第12张图片

四、直接绑定到标签

Android还有一种更简单的绑定事件监听器的方式,那就是直接在界面布局文件中为指定标签绑定事件处理方法。

对于很多Android界面组件标签而言,它们都支持onClick属性,该属性的属性值就是一个形如xxx(View source)方法的方法名。

接下来通过一个简单的示例程序来学习Android直接绑定到标签进行事件处理。

继续使用WidgetSample工程,在app/main/res/layout/目录下创建event_xml_label_layout.xml文件,在其中填充如下代码片段:

Android零基础入门第34节:Android中基于监听的事件处理_第13张图片

上面程序中的粗体字代码用于在界面布局文件中为Button按钮绑定一个事件处理方法: clickHandler,这就意味着幵发者需要在该界面布局对应的Activity中定义一个void clickHandler(View source)方法,该方法将会负责处理该按钮上的单击事件。

然后在java包下创建EventListenerXmlLabelActivity.java文件,加载上面新建的布局文件,由于在布局文件绑定点击事件,顾在界面交互代码里面定义事件处理方法即可,具体代码如下:

Android零基础入门第34节:Android中基于监听的事件处理_第14张图片

上面程序中的粗体字代码定义了一个clickHandler(View source)方法,当程序中的按钮被单击时,该方法将会被激发并处理对应按钮上的单击事件。

修改启动的Activity,然后运行程序,点击按钮,可以看到下图所示界面效果。

Android零基础入门第34节:Android中基于监听的事件处理_第15张图片

到此,基于监听事件的处理5种形式学习完毕,下期继续学习基于回调的事件处理。


今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!

此文章版权为微信公众号分享达人秀(ShareExpert)——鑫鱻所有,若需转载请联系作者授权,特此声明!

往期总结分享:

Android零基础入门第1节:Android的前世今生

Android零基础入门第2节:Android 系统架构和应用组件那些事

Android零基础入门第3节:带你一起来聊一聊Android开发环境

Android零基础入门第4节:正确安装和配置JDK, 高富帅养成第一招

Android零基础入门第5节:善用ADT Bundle, 轻松邂逅女神

Android零基础入门第6节:配置优化SDK Manager, 正式约会女神

Android零基础入门第7节:搞定Android模拟器,开启甜蜜之旅

Android零基础入门第8节:HelloWorld,我的第一趟旅程出发点

Android零基础入门第9节:Android应用实战,不懂代码也可以开发

Android零基础入门第10节:开发IDE大升级,终于迎来了Android Studio

Android零基础入门第11节:简单几步带你飞,运行Android Studio工程

Android零基础入门第12节:熟悉Android Studio界面,开始装逼卖萌

Android零基础入门第13节:Android Studio配置优化,打造开发利器

Android零基础入门第14节:使用高速Genymotion,跨入火箭时代

Android零基础入门第15节:掌握Android Studio项目结构,扬帆起航

Android零基础入门第16节:Android用户界面开发概述

Android零基础入门第17节:TextView属性和方法大全

Android零基础入门第18节:EditText的属性和使用方法

Android零基础入门第19节:Button使用详解

Android零基础入门第20节:CheckBox和RadioButton使用大全

Android零基础入门第21节:ToggleButton和Switch使用大全

Android零基础入门第22节:ImageView的属性和方法大全

Android零基础入门第23节:ImageButton和ZoomButton使用大全

Android零基础入门第24节:自定义View简单使用,打造属于你的控件

Android零基础入门第25节:简单且最常用的LinearLayout线性布局

Android零基础入门第26节:两种对齐方式,layout_gravity和gravity大不同

Android零基础入门第27节:正确使用padding和margin

Android零基础入门第28节:轻松掌握RelativeLayout相对布局

Android零基础入门第29节:善用TableLayout表格布局

Android零基础入门第30节:两分钟掌握FrameLayout帧布局

Android零基础入门第31节:少用的AbsoluteLayout绝对布局

Android零基础入门第32节:新推出的GridLayout网格布局

Android零基础入门第33节: Android事件处理概述

Android零基础入门第34节:Android中基于监听的事件处理_第16张图片 Android零基础入门第34节:Android中基于监听的事件处理_第17张图片

更多相关文章

  1. 安卓Android开发视频教程大全50GB/安卓基础+进阶+高级+项目+源码
  2. Android Studio 基础 之 一键快速实现一个类的 构造函数、getter
  3. Android 事件全局监听(二)需要root权限 ,使用getevent监听Android输
  4. android详细解释键盘和鼠标事件
  5. 《Android移动应用基础教程》(Android Studio)(第二版)黑马教程 课后
  6. Android Touch事件传递机制解析

随机推荐

  1. android使用webview上传文件(支持相册和
  2. android 对象保存到SP
  3. Android 1比1高仿微信图片选择器(新)
  4. Android VideoView实现视频播放
  5. Android 图表生成开源之AChartEngine(整理
  6. Android开发-Android(安卓)Jetpack 架构
  7. Android各版本代号和API级别对照表
  8. android Sqlitedatabase 应用
  9. Android输入法扩展之外接键盘中文输入
  10. CheckBox 设置style 没有效果的原因