IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 监听按钮点击事件 -> 正文阅读

[移动开发]Android 监听按钮点击事件

一、实现button点击事件的方法

1、匿名内部类

2、外部类(独立类)

3、实现OnClickListener接口

4、添加XML属性

按钮:

    <ImageButton
        android:id="@+id/scanButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:background="#0000"
        android:layout_gravity="center_vertical"
        app:srcCompat="@drawable/ic_scan" />

1、匿名内部类:
优势:
1)不需要重新写一个类,直接在new的时候去实现想实现的方法,很方便。

2)当别的地方都用不到这个方法的时候使用匿名内部类

3)高内聚,高内聚是设计原则之一,匿名内部类的特性之一就是拥有高内聚。

不足:
1)当别的地方也需要同样的一个方法时还要重新再在那个地方写一次匿名内部类,这样使得代码的冗余性很高。

2)不方便后期的维护

public class MainAsnActivity extends AppCompatActivity  {
    private static final String TAG = "test";
    private ImageButton scanButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_asn_activity);
        scanButton = findViewById(R.id.scanButton);
        scanButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG, "onClick: 按钮被点击");
            }
        });
    }
}

2、独立类(外部类):
优势:
1)一定情况下可以方便维护

2)可以降低代码的冗余性,可以同时使用到多个地方

不足:
1)当只使用一次时浪费资源,程序的性能不高

2)当有很多个方法时代码的可读性不高,此时不方便维护

public class MainAsnActivity extends AppCompatActivity  {
    private static final String TAG = "test";
    private ImageButton scanButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_asn_activity);
        scanButton = findViewById(R.id.scanButton);
        scanButton.setOnClickListener(new scanButtonClick(this));

    }

package com.example.bee.Util;

import android.content.Context;
import android.util.Log;
import android.view.View;

public class scanButtonClick implements View.OnClickListener {
    private static final String TAG = "test";
    private Context context;

    //scanButtonClick方法
    public scanButtonClick(Context ct){
        this.context=ct;
    }
    @Override
    public void onClick(View view) {
        Log.d(TAG, "onClick: 按钮被点击");
    }
}

3、实现OnClickListener接口:
 与独立类实现的原理是一样的,优点和缺陷也是大径相同的,实现OnClickListener接口的时候实现它其中的onClick方法

public class MainAsnActivity extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG = "test";
    private ImageButton scanButton;
    private Button allReceiveButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_asn_activity);
        scanButton = findViewById(R.id.scanButton);
        scanButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        Log.d(TAG, "onClick: 扫描按钮被点击");
    }
}

4、添加XML属性:
优势:更加便捷,代码量能够减少

不足:每一次维护的时候都要去XML里面改源码,维护麻烦

<ImageButton
        android:id="@+id/scanButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:background="#0000"
        android:layout_gravity="center_vertical"
        app:srcCompat="@drawable/ic_scan"
        android:onClick="scanBtn"/>

在这里插入图片描述
在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 23:28:47  更:2021-07-29 23:28:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 5:26:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码