lushengduan03点击事件的四种实现方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lushengduan03点击事件的四种实现方式相关的知识,希望对你有一定的参考价值。
好吧,首先我们来解释一下什么“点击事件”,所谓“点击事件”就是当我们点击(注意是单击)手机屏幕时,系统做出相应的响应;举个例子哈,你去朋友家里,要告诉你的朋友你到了,你是不是要敲一敲门,然后你朋友听到了就来给你开门了,这个就和我们点击屏幕上的Button很类似,点击的操作相当于敲门,至于“朋友听到”和“开门”这两个行为动作,就是我们今天要探讨的内容了。
手机没有耳朵,不可能“听到”我们点击了屏幕,因此,需要给Button绑定一个监听器,每当Button被点击了,就去执行某些特定的操作,常用的点击事件的实现方式有四种。
一、布局中绑定onClick属性
上一篇文章大家也接触到了,在Button这个控件里面,设置“android:onClick”属性
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="showToast" android:text="CLICK ME!"/>
“onClick”的值将对应载入这个布局的Activity中方法,也就是说如果“android:onClick=“xxx””的话,那么,在HelloWorldActivity里的方法就应该为
public void xxx(View view){ //Do what you want to do here. }
当我们点击Button的时候,就会去执行xxx方法里的代码
二、实现OnClickListener接口
OnClickListener是一个接口,通过implements来onClick这个接口,在onClick这方法里面就可以实现自己的操作了
package com.example.lushengduan.helloworld; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; /** * Created by Lushengduan on 2016/3/4. */ public class HelloWorldActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); } @Override public void onClick(View v) { //Do what you want to do here. } }
看到这里大家会不会有个问题,这个监听器没有明确指定监听哪一个组件,那它是怎么工作的呢?是这样的,我们能通过v.getId()来标识不同的组件,现在为Button增加一个名为“button1”的id
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="showToast" android:id="@+id/button1" android:text="CLICK ME!"/>
那么结合View类里的getid就可以定位到我们点击的Button这个控件,而不是其他地方了,代码如下
@Override public void onClick(View v) { switch (v.getId()){ case R.id.button1: //To do someThing break; default: break; } }
三、内部类方式
Button类里有个方法叫做“setOnClickListener”,这个方法的参数需要的是一个OnClickListener的对象,新建一个内部类实现OnClickListener的接口就行了,在这之前,我们需要通过findViewById的方式拿到Button对象
button = (Button) findViewById(R.id.button1);
为Button设置监听器
button.setOnClickListener(new MyClickListener());
然后在onClick方法中执行你想要的操作,完整代码如下
package com.example.lushengduan.helloworld; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; /** * Created by Lushengduan on 2016/3/4. */ public class HelloWorldActivity extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); button = (Button) findViewById(R.id.button1); button.setOnClickListener(new MyClickListener()); } private class MyClickListener implements OnClickListener{ @Override public void onClick(View v) { //Do what you what to do here. } } }
四、匿名内部类方式
能写成内部类的,可以写成匿名内部类的方式,理解了上面的代码后,那么就很简单,基本是java的基础知识了,直接看代码
package com.example.lushengduan.helloworld; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; /** * Created by Lushengduan on 2016/3/4. */ public class HelloWorldActivity extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); button = (Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //Do what you want to do here. } }); } }
以上是关于lushengduan03点击事件的四种实现方式的主要内容,如果未能解决你的问题,请参考以下文章