Android中按钮的点击事件的四种写法

如题,在Android中按钮的点击事件有四种写法,如下图。

界面为四个Button+一个TextView+一个ImageView


activity_main布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="5dp"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_click1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/click1" />

    <Button
        android:id="@+id/btn_click2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/click2" />

    <Button
        android:id="@+id/btn_click3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/click3" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="click4"
        android:text="@string/click4" />

    <TextView
        android:id="@+id/tv_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/holo_red_light"
        android:textSize="18sp"/>
    <ImageView
        android:id="@+id/iv_yc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
主界面实现的代码如下:

package clickevent.ithema.com.clickevent;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity implements View.OnClickListener {
    private TextView tv_text;
    private Button btn_click1,btn_click2,btn_click3;
    private ImageView iv_yc;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv_text = (TextView) findViewById(R.id.tv_text);
        iv_yc= (ImageView) findViewById(R.id.iv_yc);

        btn_click1 = (Button) findViewById(R.id.btn_click1);
        btn_click2 = (Button) findViewById(R.id.btn_click2);
        btn_click3 = (Button) findViewById(R.id.btn_click3);

        btn_click2.setOnClickListener(this);//这是实现接口点击的方法
        btn_click3.setOnClickListener(new MyListener());//这是自定义类实现接口点击的方法

        btn_click1.setOnClickListener(new View.OnClickListener() {//实现匿名内部类点击的方法
            @Override
            public void onClick(View v) {
                tv_text.setText("这是匿名内部类点击的方法,适用于只用一次点击方法");
                iv_yc.setImageResource(R.drawable.click1);
            }
        });
    }

    @Override
    public void onClick(View v) {
        tv_text.setText("这是实现接口点击的方法");
        iv_yc.setImageResource(R.drawable.click2);
    }

    class MyListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            tv_text.setText("这是自定义类实现接口点击的方法");
            iv_yc.setImageResource(R.drawable.click3);
        }
    }

    public void click4(View v){
        tv_text.setText("这是在xml文件中定义属性的方法");
        iv_yc.setImageResource(R.drawable.click4);
    }
}</span><span style="font-size:18px;font-weight: bold;">
</span>

以下为拆分后单独的代码:

方法一:匿名内部类方法

package clickevent.ithema.com.clickevent;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * Created by Administrator on 2016/7/16.
 */
public class Click1 extends Activity{
    private TextView tv_text;//文本框
    private ImageView iv_yc;//图片框
    private Button btn_click1;//按钮
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv_text= (TextView) findViewById(R.id.tv_text);//查找到文本框的ID
        iv_yc= (ImageView) findViewById(R.id.iv_yc);//查找到图片框的ID

        btn_click1= (Button) findViewById(R.id.btn_click1);//查找到按钮的ID
        btn_click1.setOnClickListener(new View.OnClickListener() { //给按钮设置监听
            @Override//按钮点击解发的方法
            public void onClick(View v) {
                //设置要显示的文字
                tv_text.setText("这是匿名内部类点击的方法,适用于只用一次点击方法");
                //设置要显示的图片
                iv_yc.setImageResource(R.drawable.click1);
            }
        });
    }
}
方法二:实现接口

package clickevent.ithema.com.clickevent;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * Created by Administrator on 2016/7/16.
 */
public class Click2 extends Activity implements View.OnClickListener {//实现监听接口
    private TextView tv_text;//文本框
    private ImageView iv_yc;//图片框
    private Button btn_click2;//按钮

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv_text= (TextView) findViewById(R.id.tv_text);//查找到文本框的ID
        iv_yc= (ImageView) findViewById(R.id.iv_yc);//查找到图片框的ID

        btn_click2= (Button) findViewById(R.id.btn_click2); //查找到按钮的ID
        btn_click2.setOnClickListener(this);//给按钮设置监听
    }

    @Override//按钮点击解发的方法
    public void onClick(View v) {
        //设置要显示的文字
        tv_text.setText("这是实现接口点击的方法");
        //设置要显示的图片
        iv_yc.setImageResource(R.drawable.click2);
    }
}
方法三:自定义类实现接口

package clickevent.ithema.com.clickevent;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * Created by Administrator on 2016/7/16.
 */
public class Click3 extends Activity {
    private TextView tv_text;//文本框
    private ImageView iv_yc;//图片框
    private Button btn_click3;//按钮

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv_text = (TextView) findViewById(R.id.tv_text);//查找到文本框的ID
        iv_yc= (ImageView) findViewById(R.id.iv_yc);//查找到图片框的ID

        btn_click3 = (Button) findViewById(R.id.btn_click3);//查找到按钮的ID
        btn_click3.setOnClickListener(new MyListener());//给按钮设置监听
    }

    class MyListener implements View.OnClickListener {//自定义MyListener类实现OnClickListener接口

        @Override
        public void onClick(View v) {
            //设置要显示的文字
            tv_text.setText("这是自定义类实现接口点击的方法");
            //设置要显示的图片
            iv_yc.setImageResource(R.drawable.click3);
        }
    }
}
方法四:在xml文件中定义onClick属性
1、在xml文件中定义onClick属性:

<Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="click4"
        android:text="@string/click4" />
2、在java代码中写点击的方法:

package clickevent.ithema.com.clickevent;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * Created by Administrator on 2016/7/16.
 */
public class Click4 extends Activity {
    private TextView tv_text;//文本框
    private ImageView iv_yc;//图片框

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv_text = (TextView) findViewById(R.id.tv_text);//查找到文本框的ID
        iv_yc= (ImageView) findViewById(R.id.iv_yc);//查找到图片框的ID
    }

    public void click4(View v){
        //设置要显示的文字
        tv_text.setText("这是在xml文件中定义属性的方法");
        //设置要显示的图片
        iv_yc.setImageResource(R.drawable.click4);
    }
}

以上是本人总结的按钮的四种点击事件,如有不足之处,请给予批评指正,谢谢!


  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值