安卓开发--按键背景图片,按键其他属性,按键按键按下变色

前面已经介绍了一个空白按键工程的建立以及响应方式,可以参考这里:安卓开发–新建工程,新建虚拟手机,按键事件响应。

安卓开发是页面跳转是基础!!!所以本篇博客介绍利用按键实现页面跳转,以及按钮按下变色。

前言

先介绍一下本次的代码基础

布局文件res/layout/activity_main.xml代码,布局了两个按键:

<?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"><Buttonandroid:id="@+id/btn1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="按键1"android:textSize="50dp"/><Buttonandroid:id="@+id/btn2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="按键2"android:textSize="50dp"/></LinearLayout>

逻辑文件java/com/example/myfirstapp/MainActivity.java代码:

package com.example.myfirstapp;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;public class MainActivity  extends AppCompatActivity {private Button mbt01;private Button mbt02;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mbt01=findViewById(R.id.btn1);mbt02=findViewById(R.id.btn2);setListeners();//调用方法}//写一个方法private void setListeners(){OnClick onclick=new OnClick();//实例化onclickmbt01.setOnClickListener(onclick);mbt02.setOnClickListener(onclick);}private class OnClick implements  View.OnClickListener{@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.btn1://跳到按钮界面Log.d("btn1", "按钮1被点击了");break;case R.id.btn2://跳到文本框界面Log.d("btn2", "按钮2被点击了");break;}}}
}

运行效果如图:

这里1表示代码,2是虚拟手机界面,3是Logcat窗口,4是点击后的log信息,可以看到按键1 2点击均有相应的反应。

1.背景图片设置

先从图标网站下载一个图标,本次使用阿里巴巴图标库:阿里巴巴图标库。下载png格式的如下图标,目标是用在按键2上面。

下载好图片后,将其放置在res/drawable文件夹下面。注意了文件名不能中文,中划线。
然后,在布局代码中写入参数,调用图片:

<?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"><Buttonandroid:id="@+id/btn1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="按键1"android:textSize="50dp"/><Buttonandroid:id="@+id/btn2"android:layout_width="200dp"android:layout_height="wrap_content"android:background="@drawable/doubleright"android:textSize="50dp" /></LinearLayout>

可以看到按键二图标生效。如图所示:

2.按键其他属性----背景文字对齐方向,换行,透明度

对齐(Alignment)
左对齐:android:textAlignment="viewStart"
右对齐:android:textAlignment="viewEnd"

文字换行:android:text="字符A\n字符B"

按键透明度:android:alpha="0.4"数值从0-1,0为全透明,1为无透明效果

3.按键进阶----按下时样式发生变化

我们很多时候会看到,当按下一个按键的时候,按键发生了变化。松开后按键又是另外一种状态。通过这个功能,可以使我们的UI变得非常漂亮。这里只是引出基本用法。我们使用按键1举例,实现按下按键1,背景颜色发生变化。

首先,新建文件res/drawable/button_background.xml同时为其写下代码:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"><shape><solid android:color="#CC7A00"/><corners android:radius="5dp"/></shape></item><item android:state_pressed="false"><shape><solid android:color="#1AE6BD"/><corners android:radius="5dp"/></shape></item>
</selector>

然后再布局按钮中调用上面的布局,通过属性设置来调用。

android:background="@drawable/button_background"

最终效果,按下时颜色变化。

如果不能成功,需要将res/values/themes.xml代码中的

<style name="Base.Theme.MyFirstAPP" parent="Theme.Material3.DayNight.NoActionBar">

修改为

<style name="Base.Theme.MyFirstAPP" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">

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

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

相关文章

添加对象方法

添加对象方法的方法如下&#xff0c;这是一个通用模式 注意灵活运用。

数据库调优-SQL语句优化

2. SQL语句优化 sql 复制代码 # 请问这两条SQL语句有什么区别呢&#xff1f;你来猜一猜那条SQL语句执行查询效果更好&#xff01; select id from sys_goods where goods_name华为 HUAWEI 麦芒7 魅海蓝 6G64G 全网通; ​ select id from sys_goods where goods_id14967325985…

Redis学习1——redis简介、基础

介绍 redis简介 Redis(Remote Dictonary Server) 是由Salvatore Sanfilippo开发的key-value缓存数据库&#xff0c;基于C语言开发。目前市面上&#xff0c;Redis和MongoDB是当前使用最广泛的NoSQL&#xff0c;而就Redis技术而言&#xff0c;它的性能十分优越&#xff0c;可以…

仿真相关知识积累

融合模型是什么 集成学习 融合模型&#xff0c;也称为集成学习&#xff0c;是一种将多个基模型组合在一起以提升整体模型性能的方法。这种思想通过不同的策略将多个相对较弱的模型&#xff08;学习器&#xff09;结合起来&#xff0c;从而达到较强的模型性能。

rngd: Error writing /dev/tpm0

检查数据库时发现messages中一直有rngd报错&#xff0c;rngd一直未配置&#xff0c;直接关闭了 /var/log/messages-20240414:Apr 11 04:59:49 hydb2 rngd: Error writing /dev/tpm0 /var/log/messages-20240414:Apr 12 07:31:39 hydb2 rngd: Error writing /dev/tpm0 /var/log…

shell-for循环语句练习题

1.计算从1到100所有整数的和 [rootlocalhost ~]# vim 1.sh #!/bin/bash sum0 #定义变量sum初始值为0 for i in {1..100} #for循环 i取值从1到100 do sum$[ isum ] #在每次循环中&#xff0c;变量i的值会依次取1到100的整数值。 #sum是一个累加器&#xff0c;初始值…

echarts自定义图例显示名称、数值、占比

先上代码 legend: {orient: vertical,left: 10,top:20,data: data,textStyle: {color: #9FB7D5 // 设置图例文字颜色为白色},// type: plain, // 设置图例类型为普通类型itemWidth: 10, // 设置图例项的宽度itemHeight: 10, // 设置图例项的高度formatter: function(name) {let…

Python专题:十、字典(2)

字典定义x{} get()函数 get&#xff08;参数一&#xff0c;参数二&#xff09; 参数一&#xff1a; 需要查找的关键词 参数二&#xff1a; 如果关键词不存在get返回的默认值 字典的更新 update&#xff08;&#xff09;函数&#xff0c;字典y的元素&#xff0c;去更新字…

学生管理系统初级

根据题目要求生成大纲 总结: 1.在书写时&#xff0c;考虑到了书写时id可是是abc... 类型是String&#xff0c;但在根据id获取集合中元素时 list.get() &#xff0c;get&#xff08;&#xff09;里面是int类型。 2.在书写还有一点功能并不完全&#xff0c; 2.1查找时是打印所有…

缓存雪崩、缓存击穿、缓存穿透是什么、之间的区别及解决办法

缓存雪崩、缓存击穿、缓存穿透&#xff1a; 详细介绍看这篇文章&#xff0c;写得很好&#xff1a; 什么是缓存雪崩、缓存击穿、缓存穿透 下面是我自己总结的&#xff0c;比较简单清楚地展示了缓存雪崩、缓存击穿和缓存穿透的根本区别和相应的解决办法。强烈建议看完上述文章后…

十.吊打面试官系列-Tomcat优化-通过压测Tomcat调优实战

前言 上一篇文章我们讲解了一下Tomcat底层的结构和执行原理&#xff0c;我们需要重点去掌握的是Tomcat的高内聚低耦合的设计&#xff0c;以及责任链模式&#xff0c;以及Tomcat NIO编程模式&#xff0c;这些是Tomcat比较核心的点&#xff0c;本篇文章我们将对Tomcat的参数做一…

Java学习【类与对象】

类和对象 开始我们就不讲那些把大象放冰箱需要几步来引入面向对象的例子了&#xff0c;直接上干货。 在Java中&#xff0c;类是对现实世界中某一类事物的抽象描述。它包含了该类事物的属性和方法。属性用于描述事物的状态&#xff0c;而方法则用于描述事物可以做的事情。对象也…

Redis 支持的 Java 客户端都有哪些?

Redis 是一种高性能的键值存储系统&#xff0c;它以其快速、灵活和可扩展的特性而闻名。在 Java 开发中&#xff0c;与 Redis 交互的方式通常是通过使用 Redis 的 Java 客户端。 这些客户端提供了访问 Redis 数据库的接口&#xff0c;使开发人员能够在 Java 应用程序中轻松地使…

MongoDB聚合运算符:$topN

MongoDB聚合运算符&#xff1a;$topN 文章目录 MongoDB聚合运算符&#xff1a;$topN语法用法关于null和缺失值的处理BSON数据类型排序 举例查找三个得分最高的查找全部游戏中三个最高的得分基于分组key来计算参数n $topN聚合运算符返回分组中指定顺序的最前面 n个元素&#xf…

使得安全团队难以准确评估网络的真实安全状况

防火墙策略管理与策略分析&#xff1a;如何准确评估网络真实安全状况 摘要 随着信息技术的飞速发展&#xff0c;网络安全问题日益严重。防火墙作为网络安全的第一道防线&#xff0c;对于保障网络的安全具有重要意义。然而&#xff0c;在实际应用中&#xff0c;由于防火墙策略管…

704. 二分查找

Problem: 704. 二分查找 &#x1f437;我的leetcode主页 文章目录 题目分类思路什么是二分查找如何理解时间复杂度 解题方法Code 题目 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&a…

电脑设置在哪里打开?Window与Mac双系统操作指南

随着科技的不断发展&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;对于许多初学者来说&#xff0c;如何找到并熟悉电脑的设置界面可能是一个挑战。特别是对于那些同时使用Windows和Mac双系统的用户来说&#xff0c;更是需要一篇详尽的指南来…

qml 和 c++类的数据交互

1、 新建一个需要交互的C++类 1)添加QObject头文件 2)添加自QObject的继承 3)添加Q_OBJECT宏 4)使用Q_PROPERTY,定义两个交互的属性,并设置读写的方法和变更属性的信号。 5)添加方法、槽函数和变量 2、在main.cpp中添加实例化对象的QML上下文 1)添加需要QML交互的…

【QT教程】QT6音视频性能优化技巧 QT音视频

QT6音视频性能优化技巧 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费…

在做题中学习(54):点名

LCR 173. 点名 - 力扣&#xff08;LeetCode&#xff09; 此题有不同的几种解法&#xff1a; 解法一&#xff1a;暴力枚举 O(n); 解法二&#xff1a;哈希表 把原数组丢入哈希表&#xff0c;遍历哈希表&#xff0c;看看哪个数值为0即可。 O(n)空间O(n)时间 解法三&…