`

Android开发中onClick事件的几种实现,分析,对比

 
阅读更多

作者:黄少卿

一、实现环境

操作系统平台:Windows XP

开发IDE:MyEclipse 8.M

使用SDK版本:Android SDK 2.3.3(API 10)

手机模拟器环境: Battery Support && SD Card Support(90M) 其它设置默认。 

 

二、程序功能

为了方便分析,我们这里设置一个TextView和一个Button,点击Button,TextView显示“你点击了Button”。

资源文件:strings.xml中,定义两个新的资源:

    <string name="buttonName">点击我</string>
    <string name="labelName">这里显示文本</string>

组件文件:main.xml中,加入一个Button和一个TextView:

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/labelName"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/buttonName" />

三、程序界面展示

(因为功能一致,这里对功能介绍一笔带过,着重看第四部分)

运行程序,初始状态:


 

点击Button后,程序界面:

 

 

四、代码分析

要事先上述简单功能,涉及到一个onClick事件的出发,下面,列举三种实现方式。

方式一:在activity的onCreate()方法中,嵌入如下代码:

 

 Button button = (Button)findViewById(R.id.button1);
        
 button.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View arg0) {
    TextView textview = (TextView)findViewById(R.id.textView1);
    textview.setText("你点击了Button");    
   }
  });

方式二:让acticity持有TextView,并且新建类Button_Listener实现接口OnClickListener,activity中的代码为:

public class TestOnClickActivity extends Activity {
 private TextView textview;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button = (Button)findViewById(R.id.button1);  
        this.textview = (TextView)findViewById(R.id.textView1);
        button.setOnClickListener(new Button_Listener(this));        
    }
    
    public TextView getTextview() {
     return this.textview;
    }
}
类Button_Listener的代码为:
class Button_Listener implements OnClickListener {
 private TestOnClickActivity activity;
 
 public Button_Listener(TestOnClickActivity activity) {
  this.activity = activity;
 }

 @Override
 public void onClick(View v) {
  TextView textview = activity.getTextview();
  textview.setText("你点击了Button");
  
 } 
}

 

方式三:在组件文件main.xml中,对Button加入:

android:onClick="onClick_Event"

在activity中加入以下代码:

    public void onClick_Event(View view) {
        TextView textview = (TextView)findViewById(R.id.textView1);
        textview.setText("你点击了Button");        
    }

首先,不用我多说,大家也能想到我列举这三种实现方式的目的,即以前两种的臃肿来衬托最后一种方式的简介。下面我就这三种方式一一分析。

方式一:

在方式一种,程序首先根据Button的ID实例化Button,然后在Button上加入listener监听对象,并同时实现接口OnClickListener的onClick()方法。

这种方式的代码量不是很多,但是有一个弊病:违背了java语言中,面向对象思想中关于解耦合,模块化的思想。 代码将接口的实现全部堆叠在一对小小的括号内,代码较为臃肿,并且很让人费解。

 

方式二:

在方式二中,为了改正方式一的接口实现的不规范,特别重新建立了一个类:Button_Listener。

这种方式代码结构清晰,在为Button加入监听方法是,只需要new Button_Listener(this)即可。但同时,我们也能够发现,因为不属于类TestOnClickActivity,所以类Button_Listener必须通过持有TestOnClickActivity, 将其作为成员。并且,我们需要在TestOnClickActivity 中显示的加入TextView,并书写getTextview()方法,才能够实现我们的程序意图。

虽然代码的模块化,解耦化得到了一定程度上的实现,但换来的结果是代码更多,书写更加繁琐。

 

那么,在这种背景下,方式三显得格外亮眼。

方式三:

在方式三种,我们只需要在TestOnClickActivity 中增加一个成员函数onClick_Event(),并在组件文件中加入对其的使用描述即可。

代码结构简单,清晰,代码量也大大减少,并且通过xml文件的可配置性,增长了工程的可维护性,模块化进一步增强! 这也是我最为推崇的一种方式。

 

以上为个人对Android开发过程中一个onClick事件的个人看法,欢迎大家与我进行交流!

分享到:
评论

相关推荐

    Android开发之onClick事件的4种写法

    以上就是Android开发中onClick事件的四种常见实现方式,每种方法都有其适用场景,开发者可以根据项目的具体需求选择合适的方法。无论是XML声明还是Java/Kotlin代码实现,理解并熟练掌握这些方法对于提升Android应用...

    实现OnTouch、OnClick、OnLongClick的并存

    在Android开发中,事件监听是用户界面交互的关键部分。`OnTouch`、`OnClick`和`OnLongClick`是三种常见的触摸事件监听器,分别对应于触摸屏幕、点击和长按操作。本Demo实现了这三个监听器在同一视图上的并存,确保了...

    android悬浮框的onTouch和onClick事件同时存在

    在Android开发中,创建悬浮窗(FloatWindow)是一种常见的需求,它可以实现类似系统通知栏、桌面小部件等效果。在实现悬浮窗时,我们经常需要处理用户的触摸交互,包括单击(onClick)和滑动(onTouch)事件。标题...

    008_android 之 常见事件响应的实现方式对比

    本教程"008_android 之 常见事件响应的实现方式对比"深入探讨了Android中几种常见的事件响应机制,帮助开发者选择最适合的实现方法。以下是这些机制的详细说明: 1. **监听器接口(Listener Interface)**: ...

    Android中button的onClick事件几种方法

    Android中button的onClick事件几种方法 Android中button的onClick事件是一种常见的事件处理机制,用于响应用户的点击操作。下面将介绍Android中button的onClick事件的几种方法,供开发者参考。 方法一:使用...

    三种Android单击事件onclick的实现方法

    onclick事件的定义方法,分为三种,分别为在xml中进行指定方法;在Actitivy中new出一个OnClickListenner();实现OnClickListener接口三种方式。 代码分别如下: 1. xml指定onclick事件,这种方式比较适用于指定的...

    onclick事件实现div的隐藏和显示

    在网页开发中,JavaScript 是一种常用的脚本语言,用于实现页面的交互效果。"onclick" 事件是JavaScript中的一种事件处理函数,它会在用户点击一个元素时触发指定的代码。在这个场景中,我们讨论的是如何利用 ...

    Android响应事件onClick方法的五种实现方式小结

    Android 响应 onClick 事件是 Android 开发中非常重要的一个环节,对于按钮、文本框、列表项等控件的点击事件处理都是通过 onClick 事件来实现的。下面将为您介绍 Android 响应 onClick 事件的五种实现方式,每种...

    基于Android Studio环境下Button点击事件的实现.pdf

    首先,Android Studio 是基于 IntelliJ IDEA 的开发环境,学生在搭建 Android Studio 环境时经常会碰到内置的 APP 或模拟器不能使用,即使重装也没有用,此时一般先到控制面板中卸载软件,然后到计算机系统盘的 ...

    Android开发:实现qq登录界面(界面实现)

    总的来说,这个项目提供了一个基础的Android QQ登录界面实现,通过学习和分析这个项目,初学者可以掌握Android布局设计、点击事件处理以及项目构建的基本流程,为今后的Android开发打下坚实的基础。

    android Button监听事件的几种类型

    在Android开发中,Button是用户界面(UI)中不可或缺的组件,它允许用户进行交互,如点击、长按等操作。对于Button的监听事件,开发者通常需要实现多种类型的监听器来处理不同类型的用户行为。本篇文章将深入探讨...

    Android 中触摸事件与点击事件分析

    总的来说,理解Android中的View事件传递、事件消费以及触摸事件和点击事件的处理是优化用户体验和编写高效UI代码的关键。开发者需要根据应用的需求,灵活运用这些机制来实现各种交互效果。在实际编码过程中,不断...

    Android onClick按钮单击事件的四种常用写法

    Android onClick按钮单击事件是 Android 开发中最常用的事件处理机制之一。它允许开发者在用户单击按钮时执行特定的操作。在本文中,我们将介绍 Android onClick 按钮单击事件的四种常用写法。 第一种、匿名内部类 ...

    Android开发之部分字符串可实现超链接点击事件的方法源码

    本文将深入探讨如何在Android中实现部分字符串的超链接点击事件,并提供相关的源码解析。 首先,Android提供了TextView和WebView两种主要方式来处理字符串中的超链接。对于TextView,我们可以通过设置...

    android 全局悬浮按钮实现key事件

    总结一下,本教程讲解了如何在Android中实现一个全局的悬浮按钮,并使其能够响应键盘事件。这涉及到了`FloatingActionButton`的使用、点击事件监听以及模拟key事件的处理。然而,实现全局悬浮按钮通常需要更深入的...

    Android开发及相应事件

    在布局XML文件中,可以通过`onClick`属性指定点击事件的处理函数,而在Java代码中,需要实现`OnClickListener`接口来处理这些事件。 日志查看是调试的重要部分,使用`LogCat`可以查看应用运行时的日志信息。安装和...

    android demo,自定义控件view,点击该自定义view,onclick随机生成数字

    在Android开发中,自定义控件(View)是提升应用个性化和功能多样性的重要手段。本Android Demo主要展示了如何创建一个自定义View,并实现点击事件(onClick)以随机生成数字的功能。下面将详细讲解这个过程中的关键...

    android事件分析

    Android事件监听器有两种模式:一是实现特定的接口,如View.OnClickListener,另一种是使用匿名内部类或 lambda 表达式。例如,设置按钮点击事件可以这样写: ```java button.setOnClickListener(new View....

    Android中Preference的使用以及监听事件分析

    在Android开发中,Preference是构建用户界面的一种重要方式,它主要用于创建设置界面,提供开关、选择列表、输入框等常用控件。Preference类是Android框架的一部分,它简化了UI元素的创建和管理,使得开发者可以方便...

Global site tag (gtag.js) - Google Analytics