android 控件监听事件之1——实现的几种写法

本文是以前整理的android 控件监听事件实现的几种写法。

目的:为了自己以后方便查阅,分享给没空做整理的同仁。

  1. 匿名内部类的实现|

  2. 实现接口的方式实现

  3. 独立类的实现

  4. 属性直接指定的方式实现

匿名内部类的实现--

最为经常被大家使用的,优点

public class Main3Activity extends AppCompatActivity {

ToggleButton tbtn_swift;

ImageButton img_btn;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

init_view();

}

private void init_view() {

tbtn_swift = (ToggleButton) findViewById(R.id.tbtn_swift);

tbtn_swift.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

img_btn = (ImageButton) findViewById(R.id.img_btn);

img_btn.setBackgroundResource( isChecked ? R.drawable.on:R.drawable.off);

}

});

}

}

实现接口的方式实现--

多个控件需要同时实现某一个接口时,比较常用,优点代码简洁

//Main3Activity类实现了View.OnClickListener接口

public class Main3Activity extends AppCompatActivity implements View.OnClickListener {

ImageButton img_btn;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

init_view();

}

private void init_view() {

img_btn = (ImageButton) findViewById(R.id.img_btn);

img_btn.setOnClickListener(this);

}

@Override

public void onClick(View v) {

Toast.makeText(Main3Activity.this,"你点击到了图片按钮",Toast.LENGTH_LONG).show();

}

}

独立类的实现--

相同接口有需要多种实现,多种实现有共同的业务逻辑,也独特的业务逻辑时。优点减少重复代码,便于维护。

public class MainActivity extends AppCompatActivity {

Button btn_send;

Button btn_stop;

Button btn_nono;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init_view();

}

private void init_view() {

//独立类的处理+自己的独特处理

btn_send = (Button) findViewById(R.id.btn_send);

btn_send.setOnClickListener(new MyOnClickListener(){

@Override

public void onClick(View v) {

super.onClick(v);

System.out.println("这是我独特的处理");

}

});

//屏蔽独立类的处理

btn_stop = (Button) findViewById(R.id.btn_stop);

btn_stop.setOnClickListener(new MyOnClickListener(){

@Override

public void onClick(View v) {

//super.onClick(v); 不调用独立类

System.out.println("我屏蔽了独立类的公共处理,用自己的处理");

}

});

btn_nono = (Button) findViewById(R.id.btn_nono);

//仅仅用独立类的处理方式

btn_nono.setOnClickListener(new MyOnClickListener());

}

}

//独立类实现View.OnClickListener接口

class MyOnClickListener implements View.OnClickListener{

@Override

public void onClick(View v) {

System.out.println("ok===========");

}

}

属性直接指定的方式实现(不需要为控件设置id属性)--

为某个控件直接指定事件的处理方法,优点快捷。

布局资源文件中定义

<Button

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="扫描二维码"

android:id="@+id/btn_scan"

android:onClick="scan" />

对应代码实现

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

//直接调用第三方ZXing库的api进行扫描

public void scan(View view){

Toast.makeText(MainActivity.this,"你点击了。。。",Toast.LENGTH_LONG).show();

}

}

最后感谢今日头条特供分享平台,我的头条号刚刚开通的时间才几天,还是新手不足之处也请客官多多谅解。要是大伙觉得还可以,帮忙给个赞,也欢迎评论。

分享是一种美德,牵手是一种生活方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值