Androidstudio基于监听的事件处理机制

Androidstudio基于监听事件处理机制
1.基于监听的时间处理机制模型:
流程模型图:
⽂字表述:
事件监听机制中由事件源,事件,事件三类对象组成处理流程如下: Step 1:为某个事件源(组件)设置⼀个,⽤于监听⽤户操作 Step 2:⽤户的操作,触发了事件源的 Step 3:⽣成了对应的事件对象 Step 4:将这个事件源对象作为参数传给事件 step 5:事件对事件对象进⾏判断,执⾏对应的事件处理器(对应事件的处理⽅法)
归纳:
事件监听机制是⼀种委派式的事件处理机制,事件源(组件)事件处理委托给事件当事件源发⽣指定事件时,就通知指定事件,执⾏相应的操作
2.五种不同的使⽤形式:
我们以下⾯这个:简单的按钮点击,提⽰Toast信息的程序;使⽤五种不同的形式来实现!
效果图:
1)直接⽤匿名内部类
平时最常⽤的⼀种:直接setXxxListener后,重写⾥⾯的⽅法即可; 通常是临时使⽤⼀次,复⽤性不⾼!
实现代码如下:MainAcivity.java:
package ample.innerlisten;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;
public class MainActivity extends Activity {
mask
private Button btnshow;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
btnshow = (Button) findViewById(R.id.btnshow);
btnshow.setOnClickListener(new OnClickListener() {
//重写点击事件的处理⽅法onClick()
@Override
public void onClick(View v) {
/
/显⽰Toast信息
Toast.makeText(getApplicationContext(), "你点击了按钮", Toast.LENGTH_SHORT).show();
}
});
}
}
2)使⽤内部类
和上⾯的匿名内部类不同哦!使⽤优点:可以在该类中进⾏复⽤,可直接访问外部类的所有界⾯组件!
氧化亚铁实现代码如下:MainAcivity.java:
package ample.innerlisten;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;
public class MainActivity extends Activity {
private Button btnshow;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
btnshow = (Button) findViewById(R.id.btnshow);
//直接new⼀个内部类对象作为参数
btnshow.setOnClickListener(new BtnClickListener());
}
//定义⼀个内部类,实现View.OnClickListener接⼝,并重写onClick()⽅法
class BtnClickListener implements View.OnClickListener
{
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "按钮被点击了", Toast.LENGTH_SHORT).show();
}
}
}
3)使⽤外部类:
就是另外创建⼀个处理事件的Java⽂件,这种形式⽤的⽐较少!因为外部类不能直接访问⽤户界⾯类中的组件,要通过构造⽅法将组件传⼊使⽤;这样导致的结果就是代码不够简洁!
ps:为了演⽰传参,这⾥⽤TextView代替Toast提⽰!
实现代码如下:MyClick.java:
package ample.innerlisten;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class MyClick implements OnClickListener {
private TextView textshow;
//把⽂本框作为参数传⼊
public MyClick(TextView txt)
{
textshow = txt;
}
@Override
public void onClick(View v) {
//点击后设置⽂本框显⽰的⽂字
textshow.setText("点击了按钮!");
电容的测量}
}
MainActivity.java
package ample.innerlisten;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;
//让Activity⽅法实现OnClickListener接⼝
public class MainActivity extends Activity implements OnClickListener{
private Button btnshow;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
btnshow = (Button) findViewById(R.id.btnshow);
//直接写个this
btnshow.setOnClickListener(this);
}
//重写接⼝中的抽象⽅法
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "点击了按钮", Toast.LENGTH_SHORT).show();
}
}
4)直接使⽤Activity作为事件
只需要让Activity类实现XxxListener事件监听接⼝,在Activity中定义重写对应的事件处理器⽅法 eg:Actitity实现了OnClickListener 接⼝,重写了onClick(view)⽅法在为某些组建添加该事件监听对象时,直接setXxx.Listener(this)即可
实现代码如下:MainAcivity.java:
package ample.innerlisten;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;
//让Activity⽅法实现OnClickListener接⼝
public class MainActivity extends Activity implements OnClickListener{
private Button btnshow;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
我的狼外婆btnshow = (Button) findViewById(R.id.btnshow);
//直接写个this
btnshow.setOnClickListener(this);
}
//重写接⼝中的抽象⽅法
@Override
public void onClick(View v) {新侨报
Toast.makeText(getApplicationContext(), "点击了按钮", Toast.LENGTH_SHORT).show();
}
}
5)直接绑定到标签:
就是直接在xml布局⽂件中对应得Activity中定义⼀个事件处理⽅法 eg:public void myClick(View source) source对应事件源(组件)接着布局⽂件中对应要触发事件的组建,设置⼀个属性:onclick = "myclick"即可
实现代码如下:MainAcivity.java:
package ample.caller;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
}
//⾃定义⼀个⽅法,传⼊⼀个view组件作为参数
public void myclick(View source)
{
Toast.makeText(getApplicationContext(), "按钮被点击了", Toast.LENGTH_SHORT).show();
}
}
<LinearLayout xmlns:android="schemas.android/apk/res/android"
xmlns:tools="schemas.android/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"物探局
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮"
android:onClick="myclick"/>    </LinearLayout>

本文发布于:2024-09-21 20:42:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/516681.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:事件   监听器   对应   对象   监听   实现
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议