android三种方法实现监听事件
来源:互联网 发布:java两个时间相减 编辑:程序博客网 时间:2024/05/29 05:14
Android实现监听事件的四种方式(匿名内部内实现,外部类实现,接口实现,绑定到标签)
1. 使用匿名内部类的方式实现监听事件
使用方法:
- 首先为要实现监听的对象绑定监听器,例如为一个Button对象绑定一个监听器
botton.setOnClickListener();
。 - 然后在
setOnClickListener()
方法中定义一个OnClickListener的匿名内部类,然后重写内部类中的onClick方法。 - 最后在onClick方法中实现监听事件要实现的逻辑即可。
优点有:
1.可以在当前类中复用该监听器类
2.可以自由访问外部类的所有界面组件
b1.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intet = new Intent(MainActivity.this,seekbar.class);startActivity(intet);//finish();}});
2. 使用外部类的方式实现监听事件
使用方法:
- 首先要自定义一个外部类,实现OnClickListener接口,并重写onClick方法,在onClick方法中可以定义这个外部类想实现的处理逻辑,那么调用这个外部类实现监听事件时,都可以用super来调用这个类中的处理逻辑。这也是使用外部类实现监听事件的优势所在:可以将不同监听事件中大量重复的处理逻辑定义在这个类中,然后使用这个外部类实现监听事件时都可以使用super关键字来直接调用,而不用重复定义,减少重复代码,提高代码质量。
- 为要实现监听的对象绑定监听器,然后在setOnClickListener()方法中使用我们自定义的外部类来实现监听事件。
- 重写onClick方法,并根据需要来决定是否需要使用super调用父类处理逻辑,并在onClick方法中定义自己的处理逻辑。
比较少见,其中优点为:
1.当某个事件监听器被多个GUI界面共享,且主要是完成某种业务逻辑的实现
其中确定为:
1.不利于提高程序的内聚性
2.不能自由访问创建GUI界面类的组件,编程不够简洁
这个类很简单,实现OnClickListener并复写onClick方法即可,外部类监听点击事件实际中用的不多,但如果以后做到好几十个按钮点下
去要产生相同的动画效果,就可以把动画效果放到外部内里面
Button buttonup=(Button)findViewById(R.id.btn_signup);buttonin.setOnClickListener(new MyOnClicklistener() { public void onClick(View v) { //noinspection ConstantConditions super.onClick(v); Toast.makeText(MainActivity.this,"点击了登录",Toast.LENGTH_LONG).show(); } }); buttonup.setOnClickListener(new MyOnClicklistener() { public void onClick(View v) { //noinspection ConstantConditions super.onClick(v); Toast.makeText(MainActivity.this,"点击了注册",Toast.LENGTH_LONG).show(); } }); class MyOnClicklistener implements View.OnClickListener { public void onClick(View v) { //让所有使用当前外部类的点击事件的按钮都要做出一个动作,改变button本身 v.setAlpha(0.5f); }
3. 使用接口方式实现监听事件
可以直接在Activity中定义事件处理方法
其中优点为:非常简洁
缺点为:
1.这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱
2.如果activity界面类需要实现监听器接口,让人感觉比较怪异
public class ActivityListener extends Activity implements OnClickListener {private EditText show;private Button bn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);show = (EditText)findViewById(R.id.show);bn = (Button)findViewById(R.id.bn);bn.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubshow.setText("按钮被单击了!");}
4.直接绑定到标签
在布局中要发送事件源中定义一个:
android:onClick="clickHandler"
然后在该布局对应的Activity定义一个 void clickHandler(void source)方法
1 0
- android三种方法实现监听事件
- android 三种方法实现监听事件
- Android工程笔记:三种实现监听事件的方法
- 实现监听事件的三种方法。
- 三种方法监听事件
- 监听按钮点击事件实现的三种方法
- android客户端学习-事件监听的三种实现方式
- Android实现监听事件的三种方式
- Android实现事件监听的三种方式
- Android实现监听事件的三种方式.
- android监听事件的三种实现方式
- Android 实现事件监听的两个方法
- Android onClick事件三种实现方法
- Android onClick事件三种实现方法
- Android onClick事件三种实现方法
- 事件监听的三种方法
- android三种监听方法
- Android UI事件处理——实现事件监听接口的4种方法
- ShellExecute 与 ShellExecuteEx 的使用方法
- 49. Group Anagrams
- SolrCloud中的文件与Collection管理
- php字符串相加
- POJ2723
- android三种方法实现监听事件
- Codeforces Round #367 (Div. 2)
- 圆形图片
- oracle的初步学习
- ETL工具kettle原理简介
- android 读取WebView缓存及清理WebView缓存
- D - Robberies
- C++学习009预处理器指令符号 # ## #@ 符号的使用
- ListView和ScrollView冲突,只显示一行的问题