Android之OnClick事件的四种经典实现
2015-10-26 20:11
465 查看
学习Android,总结一下Android中onClick事件的四种实现方式,我们通过在一个页面中放置四个按钮来看具体代码,
如下图:
1.0 activity_main.xml:
2.0 MainActivity:
总结:
1.0 匿名内部类实现方式:代码堆叠在一起,比较臃肿,耦合性过高
2.0 内部类实现方式:代码结构比第一种方式要清晰,但还不够优雅
3.0 xml实现方式:结构清晰,代码量大大减少,模块化程度高,可维护性好
4.0 代码量比第一种和第二种方式大大减少,结构清晰
Android中OnClick事件的几种实现方式具有不同的实现场景,在特定的场景中,选用合适的实现方式能够大大减少程序的代码量,提高程序的可读性和维护性。
如下图:
1.0 activity_main.xml:
<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" android:gravity="center" tools:context="com.lgl.onclick.MainActivity" > <Button android:id="@+id/btn_click01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/click01" /> <Button android:id="@+id/btn_click02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/click02" /> <Button android:id="@+id/btn_click03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/click03" android:onClick="clickBtn03" /> <Button android:id="@+id/btn_click04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/click04" /> </LinearLayout>
2.0 MainActivity:
package com.lgl.onclick; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private Button btn01; private Button btn02; private Button btn03; private Button btn04; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** * 1.0 按钮一: 匿名内部类实现方式 */ btn01 = (Button) findViewById(R.id.btn_click01); btn01.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "按钮一", Toast.LENGTH_SHORT).show(); } }); btn02 = (Button) findViewById(R.id.btn_click02); /** * 2.0 按钮二: 内部类实现方式 */ class ButtonClick implements OnClickListener { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "按钮二", Toast.LENGTH_SHORT).show(); } } ButtonClick buttonClick = new ButtonClick(); btn02.setOnClickListener(buttonClick); /** * 3.0 按钮三: xml实现方式,对应下面的clickBtn03方法 */ btn03 = (Button) findViewById(R.id.btn_click03); /** * 4.0 按钮四:MainActivity实现OnClickListener接口实现方式 * 对应下面的onClick方法 */ btn04 = (Button) findViewById(R.id.btn_click04); btn04.setOnClickListener(this); } /** * 方法名clickBtn03与activity_main.xml中的android:onClick="clickBtn03"相对应 */ public void clickBtn03(View v) { Toast.makeText(MainActivity.this, "按钮三", Toast.LENGTH_SHORT).show(); } /** * MainActivity实现OnClickListener接口实现方式 */ @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "按钮四", Toast.LENGTH_SHORT).show(); } }
总结:
1.0 匿名内部类实现方式:代码堆叠在一起,比较臃肿,耦合性过高
2.0 内部类实现方式:代码结构比第一种方式要清晰,但还不够优雅
3.0 xml实现方式:结构清晰,代码量大大减少,模块化程度高,可维护性好
4.0 代码量比第一种和第二种方式大大减少,结构清晰
Android中OnClick事件的几种实现方式具有不同的实现场景,在特定的场景中,选用合适的实现方式能够大大减少程序的代码量,提高程序的可读性和维护性。
相关文章推荐
- Android中悬浮窗口的实现原理和示例代码
- android开机启动无界面后台程序
- Android 计时器Timer用法
- [Android Pro] Service (startservice , bindservice , unbindservice, stopService)
- Android Studio导入PullToRefresh第三方控件(已验证可行)
- Android SD卡简单的文件读写操作
- Android 状态栏
- android 通过socket获取IP
- Android ADB 端口占用问题解决方案
- android中获取打气筒的几种方式
- android资源目录---assets与res/raw区别
- 【Android成长之路】最常用和最难用的控件——ListView的浅谈(提升ListView 的运行效率)
- Android JNI实现计算器demo
- Android JNI实现计算器demo
- Android JNI实现计算器demo
- Android ListView适配器BaseAdapter
- android部分目录分析
- Android开发手记(15) 拨打电话和收发短信
- Android 自定义字体
- android中的Bitmap