黑马程序员技术交流社区
标题:
点击事件的四种实现方式
[打印本页]
作者:
charryxiaocai
时间:
2015-9-23 23:11
标题:
点击事件的四种实现方式
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.Toast;
public class ClickEventActivity extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_click_event);
/**点击事件的四种实现方式
* 1. 匿名类
* 性能最好,可读性不强
* 2. 私有类
* 控件共享监听器
* 3. XMl设置属性
* 书写是最简洁的 ,使用时需要与xml布局结合,即xml布局与代码耦合性会强一些
* 4. Activity实现接口
* 便于分销控件请求
*
*/
//1. 通过匿名类
Button anonymousBtn=(Button)this.findViewById(R.id.anonymous_btn);
anonymousBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**吐司 :瞬时显示提示信息
* context:上下文 :
* 作用: 1. 获取系统的资源 2. 获取系统的服务
* 分类: Activity和Service的上下文 application的上下文
* text:提示的文本
* duration:提示信息持续的时间 short :2秒 long : 3.5秒
*/
Toast.makeText(ClickEventActivity.this, "匿名类", Toast.LENGTH_SHORT).show();
// Toast.makeText(getApplicationContext(), "匿名类", Toast.LENGTH_SHORT).show();
}
});
//2. 私有类实现点击事件
Button innerBtn=(Button)findViewById(R.id.inner_btn);
//对该控件设置点击监听事件
innerBtn.setOnClickListener(new MyClickListener());
//4. Activity实现接口
Button activiBtn=(Button)findViewById(R.id.activity_btn);
activiBtn.setOnClickListener(this);
//绑定xml按钮 监听
Button xmlBtn=(Button)findViewById(R.id.xml_btn);
xmlBtn.setOnClickListener(this);
}
/**
* 3. xml布局设置android:onclick
* 1. 方法名必须与android:onclick的属性名相同 ,而且该方法必须是public ,传入的参数是 View
* 2. 当设置了onClick 属性,而且对该控件设置了监听器 :则只调用监听器的监听方法 ,而xml属性的方法不会回调
* 3. 不是所有的控件都默认支持onclick属性 ,比如 TextView,需要设置属性 android:clickable ="true"
*/
public void byXml(View v){
Toast.makeText(getApplicationContext(), "xml属性", Toast.LENGTH_SHORT).show();
}
//2. 私有类实现点击事件
private class MyClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "私有类", Toast.LENGTH_SHORT).show();
CompoundButton button;
}
}
//4. Activity实现接口
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.activity_btn://activty按钮
Toast.makeText(getApplicationContext(), "Activity实现接口", Toast.LENGTH_SHORT).show();
break;
case R.id.xml_btn://xml按钮
Toast.makeText(getApplicationContext(), "Activity实现接口+xml", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2