Android 控件 - Button

1、Button

1.1、新建 mybutton 模块

在原有项目基础上新建 mybutton项目
在这里插入图片描述
在这里插入图片描述

1.2、Button基础

在源码中Button继承TextView,所以TextView有的功能Button基本都有,重复功能不在赘述
在这里插入图片描述

1.2.1 设置button背景颜色

当使用background不起作用时,有下面两种方式解决:

  • 可以使用backgroundTint
  • 也可以修改values/themes.xml文件中的style,在style最后加上Bridge <style name="Theme.Demo01" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<Buttonandroid:text="@string/my_button01"android:backgroundTint="@color/teal_200"android:layout_width="200dp"android:layout_height="100dp" />

1.2.2 设置button按下和抬起后的背景

  1. 在res/drawable 中新建Drawable Resource File
    在这里插入图片描述
    在这里插入图片描述
  2. 选择Android Studio自带的背景图片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 在step1中新建的 btn_selector.xml 文件中设置
    android:state_pressed=“true” 代表按下的时候生效
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/ic_baseline_account_balance_24" android:state_pressed="true"/><item android:drawable="@drawable/ic_baseline_accessibility_24"/>
</selector>
  1. activity_main.xml引用
  <Buttonandroid:layout_width="200dp"android:layout_height="100dp"android:background="@drawable/btn_selector"android:text="@string/my_button01" />

默认:
在这里插入图片描述
按下
在这里插入图片描述

1.2.3 设置button按下和抬起后的颜色

  1. 在res下新建普通color文件夹
    在这里插入图片描述
  2. 新建btn_color_selector.xml 文件
    在这里插入图片描述
    设置按下为红色,默认为绿色
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:color="#ffff0000" android:state_pressed="true"/><item android:color="#ff00ff00"/>
</selector>
  1. activity_main.xml引用
    要想生效还需要themes.xml的style后面加上.Bridge
    <Buttonandroid:layout_width="200dp"android:layout_height="100dp"android:background="@drawable/btn_selector"android:backgroundTint="@color/btn_color_selector"android:text="@string/my_button01" />

默认:
在这里插入图片描述
按下:
在这里插入图片描述

1.2.4 foreground前景色

设置之后会把背景和文字覆盖,可以想象成按钮分为3层,第一层是背景色,第二层是文字,第三层是前景色。一般很少用到
在这里插入图片描述

1.3、Button事件处理

package com.example.mybutton;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {public static final String TAG = "Blake";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btn = findViewById(R.id.btn);// 点击事件btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.e(TAG, "onClick");}});// 长按事件btn.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {Log.e(TAG, "LongClick");return false;}});// 触摸事件btn.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// 触摸事件 分三种Log.e(TAG, "OnTouch" + event.getAction());return false;}});}
}

1.3.1 点击事件

当按钮点击并松开后执行,在三个事件中onClick是最后执行的,如果一个按钮同时有这三个事件,执行顺序的log如下。

2022-05-27 16:19:16.224 7786-7786/com.example.mybutton E/Blake: OnTouch0
2022-05-27 16:19:16.628 7786-7786/com.example.mybutton E/Blake: LongClick
2022-05-27 16:19:17.610 7786-7786/com.example.mybutton E/Blake: OnTouch2
2022-05-27 16:19:17.810 7786-7786/com.example.mybutton E/Blake: OnTouch2
2022-05-27 16:19:18.496 7786-7786/com.example.mybutton E/Blake: OnTouch1
2022-05-27 16:19:18.497 7786-7786/com.example.mybutton E/Blake: onClick

也可以在xml文件中定义点击事件,但是应该快被弃用了。
在这里插入图片描述

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

1.3.2 长按事件

如果长按事件返回值改为 return true; 那么点击事件将不会执行。

2022-05-27 16:21:27.738 7935-7935/com.example.mybutton E/Blake: OnTouch0
2022-05-27 16:21:28.140 7935-7935/com.example.mybutton E/Blake: LongClick
2022-05-27 16:21:30.792 7935-7935/com.example.mybutton E/Blake: OnTouch2
2022-05-27 16:21:31.209 7935-7935/com.example.mybutton E/Blake: OnTouch2
2022-05-27 16:21:31.543 7935-7935/com.example.mybutton E/Blake: OnTouch2
2022-05-27 16:21:31.644 7935-7935/com.example.mybutton E/Blake: OnTouch2
2022-05-27 16:21:32.784 7935-7935/com.example.mybutton E/Blake: OnTouch1

1.3.3 触摸事件

如果触摸事件返回值改为 return true; 那么长按事件和点击事件将不会执行。

2022-05-27 16:23:10.827 8006-8006/com.example.mybutton E/Blake: OnTouch0
2022-05-27 16:23:13.592 8006-8006/com.example.mybutton E/Blake: OnTouch2
2022-05-27 16:23:14.094 8006-8006/com.example.mybutton E/Blake: OnTouch2
2022-05-27 16:23:15.488 8006-8006/com.example.mybutton E/Blake: OnTouch1

event.getAction(),0代表按下,1代表抬起,2代表按下时滑动
在这里插入图片描述

https://www.bilibili.com/video/BV13y4y1E7pF?p=6
https://www.bilibili.com/video/BV13y4y1E7pF?p=7

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

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

相关文章

通过SQL即可让监控分析更简单更高效

1.前言 阿里时序时空数据库TSDB最新推出TSQL&#xff0c;支持标准SQL的语法和函数。用户使用熟悉的SQL&#xff0c;不仅仅查询更简单易用&#xff0c;用户还可以利用SQL强大的功能&#xff0c;实现更加复杂的计算分析。 2. 为什么需要用SQL做时序查询&#xff1f; 2.1 SQL拥…

深度好文 | 战“疫”上云正当时:打开云计算的正确姿势

作者 | 马超责编 | Carol封图 | CSDN 付费下载于视觉中国4月29日&#xff0c;谷歌的母公司Alphabet正式发布了2020年第一季度财报&#xff0c;报告显示&#xff0c;Alphabet比去年同期的363.39亿美元增长13%&#xff0c;不计入汇率变动的影响为同比增长15%&#xff1b;在业绩公…

Windows批处理文件(.bat文件和.cmd文件)简单使用

cmd文件和bat文件的区别&#xff0c;从文件描述中的区别是&#xff0c;cmd文件叫做&#xff1a;Windows命令脚本&#xff0c;bat文件叫&#xff1a;批处理文件&#xff0c;两者都可以使用任意一款文本编辑器进行创建、编辑和修改&#xff0c;只是在cmd中支持的命令要多于bat。 …

AnalyticDB for MySQL:PB级云数仓核心技术和场景解析

2019阿里云峰会上海开发者大会于7月24日盛大开幕&#xff0c;本次峰会与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货&#xff0c;共同探讨前沿科技趋势。本文整理自数据库专场中阿里云智能高级技术专家南仙的精彩演讲&#xff…

UML科普文,一篇文章掌握14种UML图

来源 | 如逆水行舟责编 | Carol封图 | CSDN 付费下载于视觉中国什么是UML&#xff1f;UML是Unified Model Language的缩写&#xff0c;中文是统一建模语言&#xff0c;是由一整套图表组成的标准化建模语言。为什么要用UML&#xff1f;通过使用UML使得在软件开发之前&#xff0c…

企业级数据库新型研发模式——数据管理DMS实践

2019阿里云峰会上海开发者大会于7月24日盛大开幕&#xff0c;本次峰会与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货&#xff0c;共同探讨前沿科技趋势。本文整理自数据库专场中阿里云智能技术专家王天振 (为知)的精彩演讲&…

linux-centos7环境搭建

1、下载centos7 官网地址&#xff1a; http://isoredirect.centos.org/centos/7/isos/x86_64/ 阿里云&#xff1a; http://mirrors.aliyun.com/centos/ 以下针对各个版本的ISO镜像文件&#xff0c;进行一一说明&#xff1a; CentOS-7-x86_64-DVD-1708.iso 标准安装版&#x…

揭秘!机器人和你对话时在想什么?

阿里妹导读&#xff1a;为什么聊天机器人越来越普及&#xff1f;聊天机器人不仅可以节省时间&#xff0c;提升效率&#xff0c;还能一天24小时提供服务&#xff0c;更是可以减少误差。聊天机器人背后的问题原理是什么&#xff1f;效率如何提升&#xff1f;就是今天我们要了解的…

阿里云与A站在一起后,悄悄干了件大事

八月盛夏&#xff0c;“AcFun弹幕视频网站”&#xff08;简称“A站”&#xff09;的视频服务器全面迁移上阿里云&#xff08;此处应有掌声&#xff09;&#xff01; A站去年与阿里云达成此项合作。在迁移过程中&#xff0c;阿里云提供专业技术解决方案团队&#xff0c;为A站建立…

科大讯飞营收破百亿,员工涨薪27%,羡慕这个AI“老大哥”​了!

科大讯飞&#xff0c;中国AI公司“老大哥”&#xff0c;交出2019年成绩单。营收达到100.79亿&#xff0c;首次破百亿&#xff1b;净利润同比增长51.12%&#xff0c;达到8.19亿&#xff0c;日均盈利224万元&#xff0c;创下历史最佳业绩。与此同时&#xff0c;5大厂2020年应届生…

Knative Serving 之路由管理和 Ingress

Knative 默认会为每一个 Service 生成一个域名&#xff0c;并且 Istio Gateway 要根据域名判断当前的请求应该转发给哪个 Knative Service。Knative 默认使用的主域名是 example.com&#xff0c;这个域名是不能作为线上服务的。本文我首先介绍一下如何修改 默认主域名&#xff…

linux-centos7 关机命令、系统目录结构介绍

1、关机命令 关机指令 shutdown; sync # 将数据由内存同步到硬盘中&#xff0c;一般关机前需要同步一下&#xff0c;防止数据丢失shutdown # 关机指令&#xff0c;会在一定时间后关机&#xff0c;我试的是一分钟后关机shutdown -h 10 # 十分钟后关机 shutdown -h 10 # 十分…

SprinBoot2.X 集成 Flowable6.6 工作流引擎

上一篇&#xff1a;SpringBoot2.x Flowable 6.4.2 开源项目 码云开源地址&#xff1a;https://gitee.com/lwj/flow GitHub开源地址&#xff1a;https://github.com/ecnice/flow flowable学习 可以入群&#xff1a;633168411 说明:此项目是我师傅为了帮助更多小伙伴们入门工作流…

OceanBase高可用实践

背景 高可用是构建分布式系统的基石。一方面&#xff0c;出于成本考虑&#xff0c; 分布式系统往往采取比较廉价的硬件&#xff0c;其可靠性相对于小型机、专有硬件有很大的不足&#xff0c; 而分布式系统的规模一般比较大&#xff0c;假如硬件的可靠性只有三个9(99.9%)&#…

咦,拆分个字符串都这么讲究?

来源 | 沉默王二封图 | CSDN 付费下载于视觉中国提到拆分字符串&#xff0c;我猜你十有八九会撂下一句狠话&#xff0c;“这有什么难的&#xff0c;直接上 String 类的 split() 方法不就拉到了&#xff01;”假如你真的这么觉得&#xff0c;那可要注意了&#xff0c;事情远没这…

linux-centos7 常用的基本命令--目录管理、基本属性

一、目录管理 1、cd &#xff08;切换目录&#xff09; cd 路径 &#xff1a;切换路径命令&#xff0c;路径可以是绝对路径&#xff0c;也可以是相对路径 ./ : 当前目录 返回上级目录&#xff1a; cd … 返回用户目录&#xff1a; cd ~ 2、ls&#xff08;列出目录&#xff…

开源考试系统 - 本地代码调试运行

文章目录一、后端部署1. 图形化克隆项目2. 命令克隆项目3. 创建数据库&#xff0c;初始化数据库脚本4. IntelliJ IDEA打开项目5. 数据库连接和redis配置6. 启动redis和后端程序6. 浏览器访问二、前端部署2.1. 打开源码安装依赖2.2. 依次启动admin端和student端2.3. 浏览器访问补…

KDD 2019论文解读:异构信息网络上的对抗生成学习

前言 网络表示学习是一种在低维空间中表示网络数据的方法&#xff0c;在异构信息网络分析中得到了广泛的应用。现有的异构信息网络表示学习方法虽然在一定程度上实现了性能的提高&#xff0c;但仍然存在一些主要的不足。最重要的是&#xff0c;它们通常采用负抽样的方法从网络…

剖析疫情环境下的国内云市场:大势所趋,正是大展拳脚的好时机!

作者 | 马超责编 | Carol封图 | CSDN 付费下载于视觉中国4月29日&#xff0c;谷歌的母公司Alphabet正式发布了2020年第一季度财报&#xff0c;报告显示&#xff0c;Alphabet比去年同期的363.39亿美元增长13%&#xff0c;不计入汇率变动的影响为同比增长15%&#xff1b;在业绩公…

开源考试系统 -微信小程序开发

文章目录一、小程序前置准备1. 创建小程序2. 下载小程序开发工具二、小程序后端部署2.1. 配置修改2.2. 启动redis2.3. 启动后端项目三、小程序前端部署3.1. 微信小程序打开项目3.2. 学生端登录页面3.3. admin端登录一、小程序前置准备 1. 创建小程序 去腾讯小程序官网注册账号…