【Android学习专题】安卓样式学习(学习内容记录)
学习记录内容来自《Android编程权威指南(第三版)》
样式调整和添加
-
调整颜色资源(res/values/colors.xml)
格式: -
添加样式(res/values/styles.xml),(创建BeatBox项目时,向导会创建默认的styles.xml文件。如果没有,请自行创建。)
格式:
样式继承
- 继承样式(res/layout/styles.xml)
格式:
主题
主题可看作样式的进化加强版。同样是定义一套公共主题属性,样式属性需要逐个添加,而主题属性则会自动应用于整个应用。主题属性能引用颜色这样的外部资源,也能引用其他样式。使用主题,不用找到每个按钮,告诉它们要用哪个主题。一句话就搞
定:“所有按钮都使用这个样式。”
-
修改默认主题(AndroidManifest.xml)
格式: -
AppTheme现在继承Theme.AppCompat.Light.DarkActionBar的全部属性。如有需要,可以添加自己的属性值,或是覆盖父主题的某些属性值。
AppCompat库自带三大主题:
- Theme.AppCompat——深色主题
- Theme.AppCompat.Light——浅色主题
- Theme.AppCompat.Light.DarkActionBar——带深色工具栏的浅色主题
格式:
3. 自定义主题属性(res/values/styles.xml)
格式:
按钮组件不支持着色,所以colorAccent主题色在项目中没有效果
4.设置窗口背景(res/values/styles.xml)
注意,这里引用的不是Theme,而是android:Theme。前面的android命名空间不能丢。
AppCompat库可以看作BeatBox应用的一部分。编译项目时,工具会引入AppCompat库和它的一堆Java和XML文件。这些文件已包含在应用里,如同你自己编写的文件。如果想引用AppCompat库里的资源,像Theme.AppCompat这样,直接引用就可以了。有些主题包含在Android操作系统里,如Theme,引用时必须加上指向归属地的命名空间。在引用Theme主题时,AppCompat库使用了android:Theme这样的形式,这是因为Theme来自于Android操作系统。
格式:
4.创建按钮样式(res/values/styles.xml)
格式:
以主题名的形式指定父主题,有继承关系的两个主题都应处于同一个包中。因此,对于Android操作系统内部主题间的继承,就可以直接使用主题名继承表示法(如下:)
同理,AppCompat库内部也是这样。然而,一旦AppCompat库要跨库继承,就一定要明确使用parent属性(如下:)
在XML中引用具体值(如颜色值)时,我们使用@符号。@color/gray指向某个特定资源。XML中?符号的意思是使用colorAccent属性指向的资源。这里是指定义在colors.xml文件中的灰色。
XML drawable
1.隔开按钮钮(res/layout/)
格式:
2.shape drawable
使用ShapeDrawable,可以把按钮变成圆。XML drawable和屏幕像素密度无关,所以无需考虑创建特定像素密度目录,直接把它放入默认的drawable文件夹就可以
3.创建圆形drawable(res/drawable/)
格式:
4.设置按钮的背景颜色,也可以说是设置了按钮被按下前的背景颜色,后面会设置按钮被按下后的背景颜色
5.state list drawable,设置按钮按下时的shape drawable(res/drawable/)
格式:
6.创建一个state list drawable和修改按钮被按下时的背景颜色(res/drawable/)
设置好后就实现了按钮没有按下的时候使用button_beat_box_normal作背景,按下时就使用button_beat_ box_pressed作背景
除了按下状态,state list drawable还支持禁用、聚焦以及激活等状态。若想详细了解,请访问网页developer.android.com/guide/topics/resources/drawable-resource.html#StateList。
7.layer list drawable,为按钮按下时添加视觉反馈
格式:
使用 mipmap 图像
应用要用到图像,就针对不同的设备尺寸准备不同尺寸的图片,再分别放入drawable-mdpi和drawable-hdpi这样的文件夹。然后,按名字引用它们。剩下的就交给Android了,它会根据当前设备的屏幕密度调用相应的图片,Android启动器是个常驻主屏幕的应用。按下设备的主屏幕键,会回到启动器应用界面。对于hdpi设备,要显示大图标,启动器就会使用xhdpi图标。找不到的话,就只能使用低分辨率的图标。可想而知,放大拉伸后的图标肯定很糟。Android的另一解决办法是使用mipmap目录,推荐做法:把应用启动器图标放在mipmap目录中,其他图片都放在drawable目录中
使用 9-patch 图像
1.首先允许按钮随屏幕大小动态调整
使用9-patch图像能解决这个问题。9-patch图像是一种特别处理过的文件,能让Android知道图像的哪些部分可以拉伸,哪些部分不可以。只要处理得当,就能确保背景图的边角与原始图像保持一致。
9-patch图像分成3×3的网格,即由9部分或9 patch组成的网格。网格角落部分不会被缩放,边缘部分的4个patch只按一个维度缩放,而中间部分则按两个维度缩放, 如图所示。
9-patch图像和普通PNG图像十分相似,只有两处不同:9-patch图像文件名以.9.png结尾,图像边缘具有1像素宽度的边框。这个边框用以指定9-patch图像的中间位置。边框像素绘制为黑线, 以表明中间位置,边缘部分则用透明色表示。
使用Android SDK自带的draw9patch工具
相关文章:

【Android学习专题】安卓样式学习(学习内容记录)
学习记录内容来自《Android编程权威指南(第三版)》 样式调整和添加 调整颜色资源(res/values/colors.xml) 格式: 添加样式(res/values/styles.xml),(创建BeatBox项目时…...
普罗米修斯统计信息上报结构设计
为了实现高效的监控和警报,普罗米修斯提供了一个强大的统计信息上报机制。通过这个机制,可以将应用程序的各种统计信息发送到普罗米修斯,普罗米修斯会对这些信息进行处理,然后提供丰富的监控和警报功能。下面是基本的统计信息上报…...
两个系统之间的传值
在两个系统之间传值可以采用以下几种方式: 使用 URL 参数:可以将数据作为 URL 参数传递给另一个系统,另一个系统可以解析 URL 参数并获取数据。例如:Example Domain 使用 Cookie:可以在一个系统中设置 Cookie…...

PostgreSQL(五)JDBC连接串常用参数
目录 1.单机 PostgreSQL 连接串2.集群PostgreSQL 连接串 PostgreSQL JDBC 官方驱动下载地址: https://jdbc.postgresql.org/download/ PostgreSQL JDBC 官方参数说明文档: https://jdbc.postgresql.org/documentation/use/ 驱动类: driver-…...
如何修改浏览器中导航栏的背景色和字体
在日常使用电脑时,我们总会使用浏览器来浏览网页。而浏览器中的导航栏是用户进行网页浏览的主要界面之一,其背景色和字体的选择对用户的体验有着重要的影响。因此,为了让导航栏更加美观和易于使用,我们需要对其背景色和字体进行修…...

如何选择合适的智能氮气柜?
随着电子产品的普及,IC、半导体、精密元件、检测仪器之类的物品对湿度要求越来越高,潮湿、霉菌和金属氧化所造成的损害,随时在发生。人们对于物品的存放环境要求逐渐提高,利用防潮设备如智能氮气柜、电子防潮柜来存储产品也越来越…...

双向链表(数据结构)(C语言)
目录 概念 带头双向循环链表的实现 前情提示 双向链表的结构体定义 双向链表的初始化 关于无头单向非循环链表无需初始化函数,顺序表、带头双向循环链表需要的思考 双向链表在pos位置之前插入x 双向链表的打印 双链表删除pos位置的结点 双向链表的尾插 关…...

离线安装Percona
前言 安装还是比较简单,这边简单进行记录一下。 版本差异 一、离线安装Percona 下载percona官网 去下载你需要对应的版本 jemalloc-3.6.0-1.el7.x86_64.rpm 需要单独下载 安装Percona 进入RPM安装文件目录,执行下面的脚本 yum localinstall *.rpm修改…...

界面控件Telerik UI for WinForms使用指南 - 数据绑定 填充(二)
Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件,所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 Telerik UI for WinForms组件为可视化任何类…...

通过栈/队列/优先级队列/了解容器适配器,仿函数和反向迭代器
文章目录 一.stack二.queue三.deque(双端队列)四.优先级队列优先级队列中的仿函数手搓优先级队列 五.反向迭代器手搓反向迭代器 vector和list我们称为容器,而stack和queue却被称为容器适配器。 这和它们第二个模板参数有关系,可以…...
leetcode 704. 二分查找
题目描述解题思路执行结果 leetcode 704. 二分查找 题目描述 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示…...

蓝牙耳机什么牌子好?500内好用的蓝牙耳机推荐
随着蓝牙耳机的受欢迎程度越来越高,近几年来,无蓝牙耳机市场呈爆发式增长,蓝牙耳机品牌也越来越多。那么蓝牙耳机什么牌子好?接下来,我来给大家推荐几款500内好用的蓝牙耳机,一起来看看吧。 一、南卡小音舱…...

设计模式 -- 中介者模式
前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…...
人工智能的未来之路:语音识别的应用与挑战
随着人工智能技术的不断发展,语音识别已成为人工智能领域的一个重要应用。语音识别是指通过计算机对语音信号进行处理,将其转换为可以被计算机识别的文本或指令的过程。语音识别技术的应用范围非常广泛,例如智能家居、语音助手、智能客服、智…...

c++ 友元介绍
友元的目的就是让一个函数或类访问另一个函数中的私有成员 友元函数 (1)普通函数作为友元函数 class 类名{friend 函数返回值类型 友元函数名(形参列表);//这个形参一般是此类的对象.... } 经过以上操作后,友元函数就可以访问此类中的私有…...

四维轻云地理空间数据在线管理软件能够在线管理哪些数据?
四维轻云是一款地理空间数据在线管理软件,支持各类地理空间数据的在线管理、浏览及分享,用户可不受时间地点限制,随时随地查看各类地理空间数据。软件还具有项目管理、场景搭建、素材库等功能模块,支持在线协作管理,便…...
学习 GitHub 对我们有什么好处?
学习 GitHub 对我们有什么好处? 为什么要学习 GitHub,或者说学习 GitHub 对我们有什么好处? 理由一:GitHub 上有很多大牛出没,国外的咱先不说,就国内的像百度、腾讯、阿里之类的大公司,里面的很…...
java记录-反射
什么是反射 反射是一种让Java拥有一定动态性的机制,它允许程序在执行期间取得任何类的内部信息,并且直接操作任意对象的内部属性及方法 类加载 类加载后通过堆内存方法区的Class类型对象就能了解该类的结构信息,这个对象就像该类的一面镜子…...

这次彻底不需要账号了,无需魔法永久白嫖GPT
免费GPT 自GPT风靡以来,大家用的是不亦乐乎,你用他去解决过实际问题,你用他去写过代码,你用他去修改过bug,你用他去写过sql,你用他去画过图,你问过他你能想到的任何“刁钻”问题。 你ÿ…...

远程桌面连接是什么?如何开启远程桌面连接详细教程
远程桌面连接是一种非常方便的技术,它允许用户通过互联网在不同的计算机之间共享资源和访问数据。目前这个技术已经广泛地应用于企业、教育、医疗和其他领域,使得人们能够更高效地工作和学习。 这篇文章,我将解释远程桌面连接是什么…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...