Android事件处理之监听事件

时间:2021-03-24 22:41:11

监听事件是一种委托式的事件处理。

监听事件处理模型示意图:

Android事件处理之监听事件
三大对象:
1). 事件源(Event Resource):就是Android常用的View组件如:Button、TextView、ListView等
2). 事件(Event):就是Android中封装的Event的对象。
3). 事件监听器(Event Listener):就是Android中常用的OnclickListener、OnItemClickListener、OnTounchListener等

事件监听器的实现方式:
1.外部类

package com.example.demo;

import android.view.View;
import android.view.View.OnClickListener;

public class MyListener implements OnClickListener{

@Override
public void onClick(View v) {
//事件处理并响应

}

}

2.内部类

package com.example.demo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

private Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new MyListener ());
}

public class MyListener implements OnClickListener{

@Override
public void onClick(View v) {
//事件处理并响应

}

}
}

3.Activity自身作为监听器

package com.example.demo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener{

private Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}


}

4.匿名内部类

package com.example.demo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity{

private Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
});
}

}

事件监听器的注册:
事件源.事件监听器(事件监听器事的实现)如:btn.setOnClickListener(new MyListener ());