码迷,mamicode.com
首页 > 其他好文 > 详细

【lushengduan】03、点击事件的四种实现方式

时间:2016-03-14 21:48:23      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

    好吧,首先我们来解释一下什么“点击事件”,所谓“点击事件”就是当我们点击(注意是单击)手机屏幕时,系统做出相应的响应;举个例子哈,你去朋友家里,要告诉你的朋友你到了,你是不是要敲一敲门,然后你朋友听到了就来给你开门了,这个就和我们点击屏幕上的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.
            }
        });
    }
}

 

【lushengduan】03、点击事件的四种实现方式

标签:

原文地址:http://www.cnblogs.com/lushengduan/p/5276935.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!