在上一篇文章中,我介绍了如何自定义控件的基本三大步骤,上一篇文章麻雀虽小五脏俱全,在大的项目也是从小一点点做起来的,今天我就来说说如何给自定义的控件添加监听事件,并且对代码进行优化。说起安卓接口回调机制,我相信很多人尤其是像我这样的自学者,刚学的时候听起来更是一头雾水,今天我就在上一篇文章的基础上继续讲解(下面所讲纯是我对接口回调的个人理解,可能会很通俗,很适合新手,如有错误欢迎批评改正)
我将接口回调机制分为四个步骤:
1、定义一个接口(Interface)起名为TopBarListener,在接口中定义方法---->public void leftButtonClick();
2、在TopBar.java类中:定义方法public void setOnLeftButtonClickListener(TopBarListener topBarListener),以TopBarListener 对象作为方法的参数,并在调用TopBarListener 类中的leftButtonClick()方法。重点内容:特别注意这里的TopBarListener 对象只是进行了声明,而没有真正的new出来,所以不需要重写 onSuper()方法
3、在TopBar.java 类中,为左边按钮设置监听器,并在onClick()方法中调用 1 中的方法:leftButtonClick()。
4、在MainActivity中使用TopBar类中定义的–>setOnLeftButtonClickListener(TopBarListener topBarListener)方法,此时,就需要对 1 中定义的接口(Interface)中的–>public void onSuper();方法进行重写。重点内容:此处对TopBarListener 实例化并且new了出来,就需要重写 leftButtonClick()方法了,完成点击事件
下面我以的代码为例,进一步讲解我的demo:
- 定义接口:
package com.example.test;
public interface TopBarListener {
public void leftButtonClick();
}
2、在TopBar.java类中,调用接口中的对象,将对象暴露给使用者,来实现leftButtonClick()方法
//定义接口
private TopBarListener topBarListener;
//定义方法使用接口机制 该方法的主要目的是暴露给使用者 使用者通过重写topBarListener的方法 实现onClick的功能
public void setOnLeftButtonClickListener(TopBarListener topBarListener){
this.topBarListener = topBarListener;
}
3、在TopBar.java 类中,为左边按钮设置监听器,并在onClick()方法中调用 1 中的方法:leftButtonClick()。
// 使用接口回调机制 实现按钮的点击事件
leftButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
topBarListener.leftButtonClick();
}
});
4、在MainActivity类中,重写leftButtonClick();
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TopBar topBar = (TopBar) findViewById(R.id.topbar);
//对方法进行重写
topBar.setOnLeftButtonClickListener(new TopBarListener() {
@Override
public void leftButtonClick() {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show();
}
}) ;
}
}
好了 至此,一个完整的自定义控件+接口回调机制实现点击事件就完成了,相信看完这个你也很快就学会了吧。哈哈
我的源码在这里:源码