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);
    }
}

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

时间: 2024-07-30 10:11:06

Android中按钮的点击事件的四种写法的相关文章

Android点击事件的四种写法

Android点击事件的四种写法 一.Android点击事件的四种写法 1.点击事件的第一种写法 .  写一个内部类.实现点击事件的接口 bt.setOnClickListener(new MyButtonListener()); 2.点击事件的第二种写法,匿名内部类 bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { callPhone(); } }); 3.点击事件的第三种

Android笔记---点击事件的四种写法

Android 点击事件的四种写法: 1. 以内部类的形式实现 OnClickListener 接口.定义点击事件 class MainActivity extents Activity{ // ... private class MyListener implements OnClickListener{ public void Onclick(View v){ // ... 点击事件的响应 } } } 2. 採用匿名内部类 ? ?缺点:若是点击事件太多,则须要的匿名内部类太多 class M

Android中点击事件的四种写法详解

Android中点击事件的四种写法使用内部类实现点击事件使用匿名内部类实现点击事件让MainActivity实现View.OnClickListener接口通过布局文件中控件的属性 第一种方法:使用内部类基本步骤如下: 新建一个MyOnClickListener类并实现View.OnClickListener接口 重写View.OnClickListener接口中的OnClick(View view)方法 给Button绑定一个监听器,并监听一个点击事件示例代码如下: public class

android学习笔记003-点击事件的四种写法

一个按钮对点击事件相应的四种方法. 1.通过新建一个借口类来具体实现点击时间的响应: package com.example.dailcall; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.v

安卓中关于点击响应事件的四种写法(电话拨号器)

安卓中点击响应事件主要是用button响应事件,关于响应事件的大概有四种写法 1,,创建一个内部类,定义点击事件 2,创建一个匿名内部类,直接实现接口 3,让activity实现点击事件的接口(用的最多常见的情况) 4,4,在布局文件里面绑定一个点击的方法 < Button android:onClick= "dailButtonClicked" ..... /> 本次过程的一些代码是基于简单的电话拨号器的实现的 public class MainActivity exte

Android基础--点击事件的四种写法

1.定义内部类,实现点击事件,使用时将内部类对象传入事件源的setOnClickListener()方法中 private class MyClickListener implements View.OnClickListener{ @Override public void onClick(View v) { // 功能代码 } } 2.使用匿名内部类的方式实现点击事件 setOnClickListener(new View.OnClickListener() { @Override publ

无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)

1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM 的比较 3.常见adb指令 platform-tools/adb.exe adb.exe : android debug bridge android调试桥 adb devices:列出所以连接的设备 adb kill-server :杀死adb调试桥 adb start-server :启动adb

Android代码学习--点击事件的几种写法

由来:常规的写法参见<写一个apk>,每次点击按钮,按钮先查找文本框等元素,然后再操作,其实查找操作是很费时的操作,因此将该定义放到Activity的onCreate中:Oncreate只会执行一次,这样Activity一旦执行,就先创建好控件们了. 第二种方法:通过匿名内部类的方法:就是button.setOnClickListener(new OnClickListener(){ //实现OnClickListener接口 @Override public void onClick(Vie

Android代码规范----按钮单击事件的四种写法

[前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中指定(很少用) 在XML文件中显式指定控件的onClick属性,点击按钮时会利用反射的方式调用对应Activity中的onClick()方法. (1)xml文件代码如下: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2