Android12 material you 动态配色

news/2024/5/9 15:39:14/文章来源:https://blog.csdn.net/weixin_50301255/article/details/130389102

动态配色功能是 Material You 设计的核心

一、完整的动态配色流程包括四个步骤,如下所示:

在这里插入图片描述

  1. 用户通过 OEM 选择器更改壁纸或主题。
  2. AOSP 逻辑会自动从所选壁纸中提取单一源颜色。
  3. 将源颜色扩展到颜色API,AOSP 将单一源颜色扩展为 5 ,每种调色板包含 13 个色调颜色变体,然后填充 65 个颜色属性。
  4. 以非硬编码的方式在应用界面使用这 65 个颜色属性,这些属性在整个 Android 应用生态系统中保持一致。
  • 对应用和系统界面中的前景元素使用强调色: accent1 、accent2 、accent3
  • 对应用和系统界面中的背景元素使用强调色: neutral1 、neutral2

官方文档:https://source.android.google.cn/docs/core/display/material?hl=zh-cn

二、硬编码与动态访问的区别

1、硬编码

 android:background="#F0F000"

2、动态访问

android:background="?attr/colorPrimary"
android:background="?android:colorSecondary"
android:backgroud="@android:color/system_accent1-0"

3、@ 和 ?的区别

@ 资源引用:

用于引用系统(Android SDK)和我们在项目中添加的一些固有资源(drawable,string等)。

?属性引用:

用于引用当前主题中定义的一些属性值,“ ?”符合通过属性名字间接引用当前主题中的对应属性值,而不是属性本身。

三、常用的颜色角色及使用场景

在这里插入图片描述


1、colorPrimary 应用的主要色调,actionBar默认使用该颜色,Toolbar导航栏的底色2、colorPrimaryDark 应用的主要暗色调,statusBarColor默认使用该颜色3、statusBarColor 状态栏颜色,默认使用colorPrimaryDark4、windowBackground 窗口背景颜色5、navigationBarColor 底部栏颜色6、colorForeground 应用的前景色,ListView的分割线,switch滑动区默认使用该颜色7、colorBackground 应用的背景色,popMenu的背景默认使用该颜色8、colorAccent CheckBoxRadioButtonSwitchCompat等一般控件的选中效果默认采用该颜色9、colorControlNormal CheckBoxRadioButtonSwitchCompat等默认状态的颜色。10、colorControlHighlight 控件按压时的色调11、colorControlActivated 控件选中时的颜色,默认使用colorAccent12、colorButtonNormal 默认按钮的背景颜色13、editTextColor :默认EditView输入框字体的颜色。14、textColor Button,textView的文字颜色15、textColorPrimaryDisableOnly RadioButton checkbox等控件的文字16、textColorPrimary 应用的主要文字颜色,actionBar的标题文字默认使用该颜色17、colorSwitchThumbNormal switch thumbs 默认状态的颜色. (switch off)

在这里插入图片描述

四、values、valuse-v31(valuse-night、valuse-night-v31)文件夹资源的加载顺序

如果当前设备版本低于V31,则使用默认values;如果当前版本为V31,则优先使用valuse-v31。

五、自定义控件颜色设置的优先级顺序

使用控件时设置的 color > 控件的 style > 当前主题的 theme > 系统模式的 default 样式

六、android 资源文件命名规则(配置限定符名称)

https://blog.csdn.net/qq_19973845/article/details/103459712

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

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

相关文章

线程池【Linux】

文章目录 1. 引入2. 应用3. 实现封装线程封装线程池线程函数生产消费逻辑互斥锁条件变量线程函数主线程测试1 4. 优化5. 日志日志的重要性实现日志级别提取参数stdarg.h 头文件日志文件 懒汉实现单例模式什么是懒汉模式什么是单例模式实现 1. 引入 线程池是一种池化技术&#…

性能测试开始前的需求调研

之前的博客聊聊性能测试开始前的准备工作,聊了一些关于性能测试开始前要做的准备工作。这篇博客,来谈谈性能测试开始前的需求调研阶段,我们要做什么,关注那些Point。。。 一、基本信息 信息类型说明项目名称项目归属的业务线&am…

Python制作一个自动发送弹幕的工具,让你看直播不冷场

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 让我们先看看效果: 名字我就打码了,当然名字不是关键,我直接截图展示算了,GIF的话,太麻烦了。 环境使用: Python 3.8 / 编译器 Pycharm 2021.2版本 / 编辑器…

【Micropython】ESP8266通过NTP同步本地RTC时间

【Micropython】ESP8266通过NTP同步本地RTC时间 📌相关篇《【MicroPython esp8266】固件烧写教程》✨本案例基于Thonny平台开发。✨ 📋实时时钟 (RTC) 🔖RTC属于machine模块中的子类。 datetime([value]): 获取或设置当前时间。如果没有指定…

JS类的学习

文章目录 一、JavaScript 类(class)二、JavaScript 类继承三、 JavaScript 静态方法总结 一、JavaScript 类(class) 类是用于创建对象的模板。 我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置&…

Python小姿势 - Python操作MongoDB数据库

Python操作MongoDB数据库 MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 现在&a…

Tomcat源码:Pipeline与Valve

参考资料: 《Tomcat组成与工作原理》 《Tomcat - Container的管道机制:责任链模式》 《Tomcat源码解析系列 Pipeline 与 Valve》 前文: 《Tomcat源码:启动类Bootstrap与Catalina的加载》 《Tomcat源码:容器的生命…

Linux安装miniconda3

下载Miniconda(Python3版本) 下载地址:https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 安装Miniconda(需要连网) (1)将Miniconda3-latest-Linux-x86_64.sh上传到/o…

ASP.NET Core MVC 从入门到精通之Razor语法

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…

Go语言基础----Go语言简介

【原文链接】Go语言基础----Go语言简介 一、Go语言简介 Go语言,又称Golang,是Google公司的Robert Griesemer,Rob Pike 及 Ken Thompson开发的一种静态强类型、编译型的语言。Go语言语法和C语言接近,但是功能上内存安全&#xff…

Day2_vue集成elementUI完善布局

上一节,实现了从O到vue页面主体框架的搭建,这一节补充完善搜索框;新增、删除、导入、导出等按钮;表格设置;分页;面包屑的实现! 目录 搜索框 新增删除、导入、导出按钮 表格设置 设置边框&a…

AI剧本拆解,教你利用AI快速拆解剧本

AI剧本拆解是一项将影视、戏剧等剧本进行分析和优化的技术,可以帮助制作团队更好地规划角色、情节、场景等元素,并提升作品的艺术水平和观赏体验。 1、为什么要拆解剧本? 剧本拆解是制片人和导演的第一项工作,把剧本中各项要素分…

AI 编程

GitHub Copilot(收费) 开发者:微软 openAI 2022年8月22日之后开始收费,10美元/月,100美元/年。 CodeGeeX(免费) CodeGeeX 可以根据自然语言注释描述(支持中英文注释&#xff09…

flask+apscheduler+企业微信消息机器人推送

简介:APScheduler是一个轻量级的Python库,用于在后台运行定时任务和延迟任务。它可以轻松地安排任务并支持多种类型的触发器,例如固定间隔、日期/时间表达式、CRON表达式等。APScheduler还提供了多个后台调度器实现,例如基于线程池…

Qt连接MySQL数据库最详细的教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.直接通过MySQL的驱动加载数据库1)所需代码2)解决QMYSQL driver not loaded 2.通过ODBC连接MySQL数据库1)官方解释2…

taro之项目初始化模版

项目初始化模板 一直以来,在使用 Taro CLI 的 taro init 命令创建项目时,CLI 会提供若干内置模板给开发者选择。但是很多团队都有自己独特的业务场景,需要使用和维护的模板也不尽一致,因此 Taro 支持把项目模板打包成一个能力赋予…

《Netty》从零开始学netty源码(四十四)之PoolChunk释放内存

free 当PoolChunk需要释放内存空间时可调用free方法,具体的源码过程如下: 在这个过程中最重要的是第三步的collapseRuns方法,当释放了空间以后要更新runsAvail和runAvailsMap的信息,如果handle对应的内存空间的上边界以及下边界是…

任务调度原理 通俗详解(FreeRTOS)

寄存器说明 以cortex-M3,首先先要了解比较特别的几个寄存器: r15 PC程序计数器(Program Counter),存储下一条要执行的指令的地址。 r14 LR连接寄存器(Link Register ),保存函数返回地址&#x…

代码随想录算法训练营第四十三天|1049. 最后一块石头的重量 II 、494. 目标和、474.一和零

文章目录 背包问题题型1049. 最后一块石头的重量 II494. 目标和474.一和零 背包问题题型 等和子集 —0-1背包能否装满最后一块石头—0-1背包尽量装满目标和—0-1背包装满,且有多少种装的方式(组合问题) 1049. 最后一块石头的重量 II 题目链…

从数据处理到人工智能(常用库的介绍)

Python库之数据分析 ​​​​​​​​​​​​ 可以这么理解pandas通过扩展了对一维数据和二维数据的一种表示,因而能够形成更高层对数据的操作,简化数据分析的运行 Python库之数据可视化 Matplotlib — Visualization with Python seaborn: statistic…