Android studio Button 监听敲击事件

1,在布局实现

我们在layout文件中,给每一个用到的Button设置属性android:onClick="onClick",  然后我们在MainActivity 里面写一个onClick()方法,这里就不是重写了,因为我们没有任何继承父类和引用接口,这里的方法名可以随意取。然后写上代码逻辑。完整代码如下:

activity_main.xml文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="学习安卓,你准备好了吗"android:id="@+id/tv_android"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="准备好了"android:id="@+id/bt_android"android:onClick="Welcome"/>##设置点击事件按钮方法为Welcome<Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="没有准备好"android:id="@+id/bt_android_1"android:onClick="noway"/>##设置点击事件按钮方法为noway
</LinearLayout>

MainActivity文件如下:

package com.unity3d.myapplication1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;/*
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}
}*/
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void Welcome(View view) {Toast.makeText(this, "欢迎来到安卓世界", Toast.LENGTH_SHORT).show();}public void noway(View view) {Toast.makeText(this, "bye bye bye ", Toast.LENGTH_SHORT).show();}}

二、接口实现

  第二种方法只要引用View.OnClickListener这个接口就行,接着Button button=findViewById(R.id.button);用来声明和绑定button控件,button.setOnClickListener(this);设置button的监听器,这两者缺一不可。下面就是重写onClick()方法,一般使用switch语句,参数是view,可以根据不同id来赋予不同的点击事件,不用像上面匿名内部类那样每一个按钮都要单独设置一下点击事件。所有代码如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity">
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/button_1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="测试按键"android:textSize="25sp"/><TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="11111"android:textSize="25sp"/><Buttonandroid:id="@+id/button_2"android:layout_width="match_parent"android:layout_height="43dp"android:text="ok ok ok "android:textSize="25sp"/>
</LinearLayout></androidx.constraintlayout.widget.ConstraintLayout>

package com.unity3d.myapplication1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import android.widget.Button;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {Button TestButton1, TestButton2; //创建button@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TestButton1 = findViewById(R.id.button_1); //通过id找到对应buttonTestButton2 = findViewById(R.id.button_2);TestButton1.setOnClickListener(new mButtonListener());TestButton2.setOnClickListener(new mButtonListener());}//新建mButtonListener类申明使用OnClickListener接口public class mButtonListener implements View.OnClickListener{@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button_1: //按键1Toast.makeText(MainActivity.this,"Hello world",Toast.LENGTH_LONG).show();Log.d("button", "onClick: 1");break;case R.id.button_2: //按键2Toast.makeText(MainActivity.this,"ok ok ok ok ",Toast.LENGTH_LONG).show();Log.d("button", "onClick: 2");break;default: break;}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/830832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tauri2 riscv wasm leptos debian

目前 riscv 相关的 debian 里的库与 x86 不太兼容&#xff0c;不能像 arm 那样方便&#xff0c;tauri 要在 x86 上交叉编译到 riscv 有点麻烦&#xff0c;主要问题就是没有资料和编译慢&#xff0c;要用模拟器 sudo apt install mmdebstrap qemu-user-static binfmt-support s…

基于昇腾AI | 英码科技EA500I使用AscendCL实现垃圾分类和视频物体分类应用

现如今&#xff0c;人工智能迅猛发展&#xff0c;AI赋能产业发展的速度正在加快&#xff0c;“AI”的需求蜂拥而来&#xff0c;但AI应用快速落地的过程中仍存在很大的挑战&#xff1a;向下需要适配的硬件&#xff0c;向上需要完善的技术支持&#xff0c;两者缺一不可。 基于此&…

Springboot项目中对Redis的使用

1.Redis依赖安装 在pom.xml文件中添加Springboot的Redis依赖&#xff1b; <!-- redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency…

【配置】Docker搭建JSON在线解析网站

云服务器打开端口8787 连接上docker运行 docker run -id --name jsonhero -p 8787:8787 -e SESSION_SECRETabc123 henryclw/jsonhero-webhttp://ip:8787访问 Github&#xff1a;地址

2024年第二十一届五一数学建模竞赛A题思路

A题 钢板最优切割路径问题 提高钢板下料切割过程中的工作效率,是模具加工企业降低成本和增加经济效益的重要途径,其中钢板切割的路径规划是钢板切割过程的一个关键环节。钢板切割就是使用特殊的切割技术,基于给定的下料切割布局图纸对钢板进行加工。切割过程中设计切割路径…

VUE2从入门到精通(一)

**************************************************************************************************************************************************************************** 1、课程概述 【1】前置储备&#xff1a;HTMLCSSJS、WebAPI、Ajax、Node.js 【2】1天&…

STM32 看门狗WDG

一、看门狗&#xff08;Watchdog&#xff09; 看门狗可以监控程序的运行状态&#xff0c;当程序因为设计漏洞、硬件故障、电磁干扰等原因&#xff0c;出现卡死或跑飞现象时&#xff0c;看门狗能及时复位程序&#xff0c;避免程序陷入长时间的罢工状态&#xff0c;保证系统的可靠…

Django后台项目开发实战一

开发环境使用 Anaconda, IDE 使用 pycharm 第一阶段 创建 Django 项目 在 Anaconda Prompt 中逐步输入下面的命令&#xff08;之后的所有命令都在这个&#xff09; 首先创建一个虚拟环境&#xff0c;名称自拟&#xff0c;python 版本我这里使用 3.9.18 关于 python 版本和…

PotatoPie 4.0 实验教程(28) —— FPGA实现sobel算子对摄像头图像进行边缘提取

什么是sobel算子&#xff1f; Sobel 算子是一种常用的边缘检测算子&#xff0c;用于在图像中检测边缘。它基于对图像进行梯度运算&#xff0c;可以帮助识别图像中灰度值变化较大的区域&#xff0c;从而找到图像中的边缘。 Sobel 算子通过计算图像的水平和垂直方向的一阶导数来…

Linux 虚拟主机切换php版本及参数

我使用的Hostease的Linux虚拟主机产品,由于网站程序需要支持高版本的PHP,程序已经上传到主机&#xff0c;但是没有找到切换PHP以及查看PHP有哪些版本的位置&#xff0c;因此咨询了Hostease的技术支持&#xff0c;寻求帮助了解到可以实现在cPanel面板上找到此切换PHP版本的按钮&…

2024 五一杯高校数学建模邀请赛(A题)|钢板最优切割路径问题|建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;运用Dijkstra算法&#xff0c;最优路径切割等强大工具&#xff0c;构建了这一题的详细解答哦&#xff01; 为大家量身打造创新解决方案。小秘籍团队&#xff0c;始终引领着建模问题求解的风潮。 抓紧小秘…

Big Data 平障录

Hive Hive 生成带压缩的格式&#xff0c;需要如此设置 SET parquet.compressionSNAPPY;yarn.scheduler.fair.assignmultiple 相关jira&#xff1a;https://issues.apache.org/jira/browse/YARN-5035 yarn.scheduler.fair.assignmultiple是YARN Fair Scheduler的一个配置参数…

Stability AI 推出稳定音频 2.0:为创作者提供先进的 AI 生成音频

概述 Stability AI 的发布再次突破了创新的界限。这一尖端模型以其前身的成功为基础&#xff0c;引入了一系列突破性的功能&#xff0c;有望彻底改变艺术家和音乐家创建和操作音频内容的方式。 Stable Audio 2.0 代表了人工智能生成音频发展的一个重要里程碑&#xff0c;为质量…

Flask模版详解

Flask模版详解 概述Jinja2模板引擎渲染模版的步骤变量控制结构自定义错误页面链接静态文件 概述 模板是一个包含响应文本的文件&#xff0c;其中包含用占位变量表示的动态部分&#xff0c;其具体值只在请求的上下文中才能知道。使用真实值替换变量&#xff0c;再返回最终得到的…

Deepin(Linux)接入ntfs硬盘柜ntfs-3g休眠问题

这里写自定义目录标题 Deepin&#xff08;Linux)接入ntfs硬盘柜ntfs-3g休眠问题原因猜测查询资料尝试解决 Deepin&#xff08;Linux)接入ntfs硬盘柜ntfs-3g休眠问题 因需要存放一些备份的数据&#xff0c;服务器使用了Deepin系统&#xff0c;开启了ftp服务&#xff0c;方便内网…

Android4.4真机移植过程笔记(一)

1、RK源码编译 获取内核源码&#xff1a; git clone git172.28.1.172:rk3188_kernel -b xtc_ok1000 内核编译环境&#xff1a; 从172.28.1.132编译服务器的/data1/ZouZhiPing目录下拷贝toolchain.tar.gz&#xff08;交叉编译工具链&#xff09;并解压到与rk3188_kernel同级目…

Golang | Leetcode Golang题解之第59题螺旋矩阵II

题目&#xff1a; 题解&#xff1a; func generateMatrix(n int) [][]int {matrix : make([][]int, n)for i : range matrix {matrix[i] make([]int, n)}num : 1left, right, top, bottom : 0, n-1, 0, n-1for left < right && top < bottom {for column : lef…

前端发起网络请求的几种常见方式(XMLHttpRequest、FetchApi、jQueryAjax、Axios)

摘要 前端发起网络请求的几种常见方式包括&#xff1a; XMLHttpRequest (XHR)&#xff1a; 这是最传统和最常见的方式之一。它允许客户端与服务器进行异步通信。XHR API 提供了一个在后台发送 HTTP 请求和接收响应的机制&#xff0c;使得页面能够在不刷新的情况下更新部分内容…

【分享】如何将word格式文档转化为PDF格式

在日常的办公和学习中&#xff0c;我们经常需要将Word文档转换为PDF格式。PDF作为一种通用的文件格式&#xff0c;具有跨平台、易读性高等优点&#xff0c;因此在许多场合下都更为适用。那么&#xff0c;如何实现Word转PDF呢&#xff1f;本文将介绍几种常用的方法&#xff0c;帮…

光伏储能是什么意思?有什么好处?

随着全球能源需求的持续增长和对环保要求的不断提高&#xff0c;新能源技术的发展已成为全球的热门话题。光伏储能作为其中的一项重要技术&#xff0c;正在逐渐受到人们的关注。那么&#xff0c;光伏储能是什么意思&#xff1f;它又有哪些好处呢&#xff1f; 一、光伏储能的定义…