0.我们都知道Java在开发界面的时候,需要使用监听事件,只有在写过监听事件之后才能够完整的使用软件,比如说,我们在写了一个button之后,想点击button,然后在文本标签中变换字体该怎么做呢?那么我们就需要对button这个view进行添加监听事件,添加完监听事件之后,就可以对其进行修改了。具体如下:

1.layout.xml布局文件

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/start"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:textSize="30sp"
        />

    <Button
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:id="@+id/button_01"
        android:text="button_01"
        android:textSize="30sp"
        android:layout_marginTop="100dp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:id="@+id/button_02"
        android:text="button_02"
        android:textSize="30sp"
        android:layout_marginTop="200dp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:id="@+id/button_03"
        android:text="button_03"
        android:textSize="30sp"
        android:layout_marginTop="300dp"
        />
</RelativeLayout>

这里面分别添加了三个Button,依次id为button_01,button_02,button_03。布局效果如下:

Android三种方法实现按钮点击事件_android

写上id是为了方便在Java代码中找到这个对象,然后对其进行编辑。

我们发现这里的xml文件和css代码类似,就是对其整个手机的APP布局进行设计。关键的问题是需要注意一些xml文件的格式问题,比如说,xml中只有一个根目录,其它标签都必须在这个根目录下面。这里我们使用的就是RelativeLayout根标签,这里的RelativeLayout就是相对布局的意思,在里面我们就可以使用margin,padding等来设置摆放位置,这就和css布局很类似。其实一些属性值也很类似。这里就不再多做介绍了。

2.弄完这个布局文件之后,我们就需要对这个按钮进行代码的测试了。

3. 就像最开始说的那个样子,我门虽然有了一个按钮,但是如果不对这个按钮进行监听操作,即使点击了这个按钮,依然无法产生效果,于是添加监听事件。

4.添加监听事件是一个稍微麻烦的事情,但是我们需要畏难而上,我们需要实现

View控件有一个setOnClickListener()方法,于是我们可以使用button1.setOnClickListener()方法,但是这个setOnClickListener()方法需要一个参数,该方法如下:

 

 public void setOnClickListener(View.OnClickListener l) {
        throw new RuntimeException("Stub!");
    }

于是我们需要在该方法中新建一个View.OnClickListener对象,只有这样,才能继续调用该方法。但是我们知道View.OnClickListener是一个接口

 

 

 public interface OnClickListener {
        void onClick(View var1);
    }

所以我们需要使用一个类实现这个接口,然后再新建这个类对下 作为参数即可。于是便有了以下三种方法:

 

 

//1.使用匿名内部类
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myTextView.setText("你点击了Button_01");
            }
        });

        //2.外部类实现这个接口
        button2.setOnClickListener(new OutButtonListener(myTextView));

        //3.使用内部类实现按钮点击功能
        class ButtonListener implements  View.OnClickListener{
            @Override
            public void onClick(View view) {
                myTextView.setText("你点击了Button_03!");
            }
        }
        button3.setOnClickListener(new ButtonListener());

注:

 

1.在使用外部类实现该接口的时候,我们需要新建一个类,名为OutButtonListener,同时,我们要注意要将该类建在和当前的这个类在同一目录下,如下所示:

Android三种方法实现按钮点击事件_xml_02

外部类OutButtonListener代码如下:

 

package com.example.myapplication;

import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Created by 时知夜霖 on 2017/3/12.
 */

//继承自View.OnClickListener
public class OutButtonListener implements View.OnClickListener {
    private TextView mTextView;

    public OutButtonListener(TextView mTextView) {
        this.mTextView = mTextView;
    }

    public void onClick(View v){//使用View 作为参数
        //按下按钮之后的事情
        this.mTextView.setText("你点击了Button_02");

        //((Button)v).setText("你点击了Button_02");
    }
}

 

 

 

 

 

2.运行结果如图所示:

Android三种方法实现按钮点击事件_C_03

Android三种方法实现按钮点击事件_监听事件_04

Android三种方法实现按钮点击事件_C_05

Android三种方法实现按钮点击事件_C_06