Android入门-事件响应方法

本文介绍了Android中四种事件响应方法的特点及使用场景。包括通过匿名类实现、Activity实现接口统一处理、定义内部类重用监听器及在布局文件中直接绑定事件处理等方法。

android的事件响应方法,有四种:
方法一:
在Activity的onCreate函数中,直接调用控件的setOnXXXListener()函数,
并在监视器接口参数中,通过匿名类实现行为功能,该方法最为常用,实现灵活。
参考代码如下:
@Override
public void onCreate(Bundle savedInstanceState){


super.onCreate(savedInstanceState);
......
final Button btn1 = (Button)findViewById(R.id.button1);
final Button btn2 = (Button)findviewById(R.id.button2);

btn1.setOnClickListener(new View.onClickListener(){
public void onClick(View v){
......
}
});


btn2.setOnClickListener(new View.onClickListener(){
public void onClick(View v){
......
}
});
}

方法二:
利用Activity实现某类事件响应接口,在接口函数中统一处理各个UI控件的该类事件,
由于在接口函数中,需要区分各个UI控件,当需要处理的控件多或事件类型多时,流程复杂,扩展也不方便。
参考代码如下:
public class TestActivity extends Activity implements OnClickListener{


private Button btn1;
private Button btn2;

@Override
public void onCreate(Bundle savedInstanceState){
btn1 = (Button)findViewById(R.id.button1);
btn2 = (Button)findViewById(R.id.button2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}

@Override
public void onClick(View v){
switch(v.getId()){
case R.id.button1:
......
break;
case R.id.button2:
......
break;
default:
break;
}
}
}

方法三:定义一个内部类,该内部类实现了监听器接口,把该内部类的对象作为参数传入UI控件的setOnXXXListener函数中。
优点是:较方式一代码逻辑较为清晰,且监控器处理函数可以重用。缺点是:没有方法一简洁。
参考代码如下:
public class TestActivity extends Activity{


private BtnOnClickListener btnClickListener = new BtnOnClickListener();

class BtnOnClickListener implements OnClickListener{
public void onClick(View v){
......
}
}


@Override
public void onCreate(Bundle savedInstanceState){
final Button btn1 = (Button)findViewById(R.id.button1);
final Button btn2 = (Button)findViewById(R.id.button2);
btn1.setOnClickListener(btnClickListener);
btn2.setOnClickListener(btnClickListener);
}
}

 

方法四:

直接在界面布局文件中为指定控件绑定事件处理方法,优点:灵活,松耦合;缺点:代码不好理解;同JAVA的注解编程类似。

参考代码:

main.xml 布局文件

......

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="btn1Click"
        android:text="单击测试" />

......

Activity01.java源代码文件

public class Activity01 extends Activity {

   protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

   }

   public void btn1Click(View v){
       
        Toast.makeText(this, "HAHA! FOUND YOU!", Toast.LENGTH_SHORT).show();
   }

}

 

参考:

http://www.apkbus.com/android-18459-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值