1.通过内部类实现
2.通过匿名内部类实现
3.通过事件源所在类实现
4.通过外部类实现
5.布局文件中onclick属性(针对点击事件)
1.通过内部类实现代码:
private Button mBtnEvent;
//oncreate中
mBtnEvent.setOnClickListener(new OnClick());
//内部类实现监听
class OnClick implements View.OnClickListener{
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_event:
ToastUtil.showMsg(EventActivity.this,"click...");
break;
}
}
}
2.通过匿名内部类实现代码
mBtnEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ToastUtil.showMsg(EventActivity.this,"click...");
}
});
3.通过事件源所在类实现代码
public class EventActivity extends AppCompatActivity implements View.OnClickListener
//onCreate中
mBtnEvent.setOnClickListener(EventActivity.this);
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_event:
ToastUtil.showMsg(EventActivity.this, "click...");
break;
}
4.通过外部类实现代码:
//新建外部类
package com.example.lineralayout;
import android.app.Activity;
import android.view.View;
import com.example.lineralayout.util.ToastUtil;
public class MyClickListener implements View.OnClickListener {
private Activity mActivity;
//创建构造方法
public MyClickListener(Activity activity){
this.mActivity = activity;
}
@Override
public void onClick(View view) {
ToastUtil.showMsg(mActivity, "click...");
}
}
//在主类中调用外部类
mBtnEvent.setOnClickListener(new MyClickListener(EventActivity.this));
5.布局文件中onClick属性(针对点击事件)
xml代码:
android:id="@+id/btn_event"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="click me"
android:textAllCaps="false"
android:onClick="onClick"/>
activity代码:
//第一种
public void onClick(View view) {
ToastUtil.showMsg(EventActivity.this, "click...");
//第二种
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_event:
ToastUtil.showMsg(EventActivity.this,"click...");
break;
}
}
监听三要素
Event Source(事件源)
Event(事件)
Event Listener(事件监听器)