Botton进一步了解(点击事件)

news2024/11/27 18:51:46

点击事件和长按事件

  • 监听器:专门监听控件的动作行为。只有控件发生了指定的动作,监听器才会触发开关区执行对应的代码逻辑。
  • 按钮控件有两种常用的监听器:
    • 点击监听器:通过setOnClickListener方法设置。按钮被按住少于500ms时会触发点击事件。
    • 长按监听器:通过setOnLongClickListener方法设置。按钮被按住超过500ms时,会触发长按事件。

点击事件

只有一个按钮
  • 示例代码
package com.example.chapter03

import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
import com.example.chapter03.util.DateUtil

class ButtonClickActivity : AppCompatActivity() {

    @SuppressLint("MissingInflatedId")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_button_click)
        val tv_result: TextView = findViewById(R.id.tv_result)
        val btn_click_single: Button = findViewById(R.id.btn_click_single)
        btn_click_single.setOnClickListener(MyOnClickListener(tv_result))    // 实例化类的一个对象出来

    }

    // 创建一个类 MyOnClickListener ,来实现 View.OnClickListener 接口
    class MyOnClickListener(private val tv_result: TextView) : View.OnClickListener {

        override fun onClick(p0: View?) {
            val dsec = String.format("%s 您点击了按钮: %s", DateUtil.getNowTime(), (p0 as Button).text)
            tv_result.text = dsec  // kotlin不用set(),也不用get()
        }

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

    <Button
        android:id="@+id/btn_click_single"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="指定单独的点击监听器"
        android:textColor="#000000"
        android:textSize="15sp"/>

    <TextView
        android:id="@+id/tv_result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="15sp"
        android:text="查看按钮点击的结果"/>
</LinearLayout>
  • 运行结果
    在这里插入图片描述

(穿插kotlin小笔记)
(构造器传参 简写)

class MyOnClickListener: View.OnClickListener {
        private val tv_result: TextView

        constructor(tv_result: TextView) {
            this.tv_result = tv_result
        }
}

// 改进
class MyOnClickListener(private val tv_result: TextView) : View.OnClickListener {}
有两个按钮
  • 示例代码
package com.example.chapter03

import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
import com.example.chapter03.util.DateUtil

class ButtonClickActivity : AppCompatActivity() {

    @SuppressLint("MissingInflatedId")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_button_click)
        val tv_result: TextView = findViewById(R.id.tv_result)
        
        val btn_click_single: Button = findViewById(R.id.btn_click_single)
        btn_click_single.setOnClickListener(MyOnClickListener(tv_result))    // 实例化类的一个对象出来
        val btn_click_public: Button = findViewById(R.id.btn_click_public)
        btn_click_public.setOnClickListener(MyOnClickListener(tv_result))
    }

    // 创建一个类 MyOnClickListener ,来实现 View.OnClickListener 接口
    class MyOnClickListener(private val tv_result: TextView) : View.OnClickListener {
        override fun onClick(p0: View?) {
            val dsec = String.format("%s 您点击了按钮: %s", DateUtil.getNowTime(), (p0 as Button).text)
            tv_result.text = dsec  // kotlin不用set(),也不用get()
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_click_single"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="指定单独的点击监听器"
        android:textColor="#000000"
        android:textSize="15sp"/>

    <Button
        android:id="@+id/btn_click_public"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="指定公共的点击监听器"
        android:textColor="#000000"
        android:textSize="15sp"/>

    <TextView
        android:id="@+id/tv_result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="15sp"
        android:text="查看按钮点击的结果"/>

</LinearLayout>
  • 结果
    在这里插入图片描述

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

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

相关文章

集合的基本内容以及迭代器的介绍

在我们java中我们存储数据的方式&#xff0c;在我们之前学习中数组是可以存储我们的数据的&#xff0c;但是数组存储数据有一些弊端&#xff0c;灵活性不强&#xff0c;存储数据类型有限&#xff0c;灵活性不强这一点主要是体现在两个方面&#xff1a;一方面数组的长度是自定义…

【数据结构】——排序篇(下)

前言&#xff1a;前面我们的排序已经详细的讲解了一系列的方法&#xff0c;那么我们现在久之后一个归并排序了&#xff0c;所以我们现在就来讲解一下归并排序。 归并排序&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法…

springboot集成knife4j详细教程

使用原生的swagger作为接口文档&#xff0c;功能不够强大&#xff0c;并且默认的ui比较简陋&#xff0c;不符合大众审美。所以实际开发中推荐使用knife4j对swagger进行增强。knife4j的地址&#xff1a;https://gitee.com/xiaoym/knife4j 基本使用 想要使用knife4j非常简单&…

MyBatis 四大核心组件之 ResultSetHandler 源码解析

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

【Linux】 通过宝塔面板重置SSH密码,无需原密码

目录 应用场景&#xff1a; 步骤一&#xff1a;登录面板 步骤二&#xff1a;安装linux工具箱 步骤三&#xff1a;点击设置 步骤总结&#xff1a; 应用场景&#xff1a; 忘记ssh密码&#xff08;前提要有宝塔的账号密码&#xff09;修改重置ssh密码 步骤一&#xff1a;登录…

LVGL | Demo实例使用说明

LVGL | Demo实例使用说明 时间&#xff1a;2023年12月10日21:51:17 文章目录 LVGL | Demo实例使用说明Demos for LVGLAdd the examples to your projectsDemosWidgetsMusic playerKeypad and encoderBenchmarkStress Contributing Demos for LVGL Add the examples to your p…

【工具】JS脚本|浏览器脚本6分钟极速入门 · 开发一个限制自己刷b站的脚本

这张图花里胡哨的是让AI生成的&#xff0c;我觉得怪可爱的&#xff0c;就直接作为封面了。 这篇文章中会开发一个JS脚本&#xff0c;这是一个用来限制b站网页版功能的脚本&#xff0c;避免刷b站的时间过长。功能如下&#xff1a; 除了搜索、视频页、私信页之外的任何页都会被重…

RabbitMQ学习笔记10 综合实战 实现新商家规定时间内上架商品检查

配置文件&#xff1a; 记住添加这个。 加上这段代码&#xff0c;可以自动创建队列和交换机以及绑定关系。 我们看到了我们创建的死信交换机和普通队列。 我们可以看到我们队列下面绑定的交换机。 我们创建一个controller包进行测试: 启动&#xff1a; 过一段时间会变成死信队列…

Multisim电路仿真软件使用教程

安装直接参考这篇文章&#xff1a;Multisim 14.0安装教程 软件管家公众号里有很多软件&#xff0c;需要的可以去找下然后安装&#xff0c;这里用的是14.0版本。 这里有个大神的详细教程&#xff0c;可以参考&#xff1a; Multisim软件使用详细入门教程&#xff08;图文全解&…

mybatis数据输出-map类型输出

1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;create table emp (empNo varchar(40) null,empName varchar(100) null,sal int null,deptno varchar(10) null ); 2、pom.xml <dependencies><dependency><groupId>org…

原来JMeter 分布式执行原理这么简单,为什么没有早点看到呢!

在使用 JMeter 进行性能测试时&#xff0c;如果并发数比较大&#xff08;比如项目需要支持 10000 并发&#xff09;&#xff0c;单台电脑&#xff08;CPU 和内存&#xff09;可能无法支持&#xff0c; 这时可以使用 JMeter 提供的分布式测试的功能&#xff0c;使用多台测试机一…

Python实现FA萤火虫优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

6.题目:编号2490 小蓝的括号串1

题目: ### 这道题主要考察stack #include<bits/stdc.h> using namespace std; const int N105; stack<char> stk; char s[N]; int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n;cin>>n;cin>>s1;bool anstrue;for(int i1;i<n;i){…

【PWN】学习笔记(二)【栈溢出基础】

课程教学 课程链接&#xff1a;https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12e7b4e6 课程附件&#xff1a; https://pan.baidu.com/s/1vRCd4bMkqnqqY1nT2uhSYw 提取码: 5rx6 C语言函数调用栈 一个栈帧保存的是一个函数的状态信息&…

java--Date、SimpleDateFormat时间类,JDK8之前的

1.Date 代表的是日期和时间 2.SimpleDateFormat 代表简单日期格式化&#xff0c;可以用来把日期对象、时间毫秒值格式化成我们想要的形式。 3.时间格式常见符号 4.SimpleDateFormat解析字符串时间成为日期对象

专业mac投屏软件AirServer v7.2.7 mac中文版

专业mac投屏软件AirServer v7.2.7 mac中文版是一款好用的投屏工具&#xff0c;它可以将您的Mac变成通用镜像接收器&#xff0c;允许您使用内置的AirPlay或基于Google Cast的屏幕投影功能镜像设备的显示器。您可以通过任何AirPlay或Google Cast兼容设备镜像或投射屏幕&#xff0…

C语言精选——选择题Day42

第一题 1. 下面程序输出的结果是&#xff08;&#xff09; #include <stdio.h> int main () {int x;x printf("I See, Sea in C");printf("x%d" , x); } A&#xff1a;2 B&#xff1a;随机值 C&#xff1a;都不是 D&#xff1a;15 答案及解析 D p…

LabVIEW开发新型电化学性能测试设备

LabVIEW开发新型电化学性能测试设备 开发了一种基于Arduino和LabVIEW的新型电化学性能测试装置&#xff0c;专门用于实验电池&#xff0c;特别是在锂硫&#xff08;Li-S&#xff09;技术领域的评估。这种装置结合了简单、灵活的硬件和软件工具&#xff0c;使新科学家能够设计针…

DiffiT

本文首发于AIWalker&#xff0c;欢迎关注。 https://arxiv.org/abs/2312.02139 https://github.com/NVlabs/DiffiT 扩散模型以其强大的表达能力和高样本质量在许多领域得到了新的应用。对于样本生成&#xff0c;这些模型依赖于通过迭代去噪生成图像的去噪神经网络。然而&#x…

每天五分钟计算机视觉:使用1*1卷积层来改变输入层的通道数量

本文重点 在卷积神经网络中有很多重要的卷积核&#xff0c;比如1*1的卷积核&#xff0c;3*3的卷积核&#xff0c;本文将讲解1*1的卷积核的使用&#xff0c;它在卷积神经网络中具有重要的地位。由于1*1的卷积核使用了最小的窗口&#xff0c;那么1*1的卷积核就失去了卷积层可以识…