AndroidQ(10)黑暗模式适配
前言:作为一个Android程序员,每年最期待就是Google的发布会啦!!这不,今年的AndroidQ如期而至。这里简单介绍一下Android的新特性:
- AndroidQ全局暗黑模式
- 隐私权限的更新
- AndroidQ新版的手势导航(其实就是仿IOS)
- 系统日程UI的优化(还有其他系统UI上的优化)
- Google组件(jetpack)的推荐
每年的Google大会一结束就是程序员忙碌工作的开端,各种适配,各种新功能… 一堆事情下来,搞的焦头烂额。 但是今年的发布会之后,仔细一看Q的更新清单,其实需要我们去适配优化的并不多,主要就是隐私权限和黑暗模式需要我们紧急适配。而且黑暗模式和以往的多主题适配是一个道理,这样我们的跟进优化工作就更加简单了。废话不多说,这里我们就来介绍一下在原生系统下进行黑暗模式的适配。
AndroidQ黑暗模式适配:
- 适配原理介绍:黑暗模式和正常模式,无非就是两种主题间的切换(主要是各种背景色,字体颜色和Icon)。因此我们只需要定义两套不同的主题,根据是否是黑暗模式进行主题的切换即可。
详细步骤:
- 判断当前是否处于黑暗模式:用于启动时还在不同的主题
//检查当前系统是否已开启暗黑模式public static boolean getDarkModeStatus(Context context) {int mode = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;return mode == Configuration.UI_MODE_NIGHT_YES;}
- 定义两套主题(正常模式和黑暗模式):即在style文件下自定义两个style,但是必须指定parent为‘Theme.AppCompat.DayNight.DarkActionBar’,如下所示:
//正常模式下的主题<style name="main_theme_light" parent="Theme.AppCompat.DayNight.DarkActionBar"><item name="windowActionBar">false</item><item name="windowNoTitle">true</item><item name="main_text_color">@color/main_text_color_light</item><item name="main_bg_color">@color/main_bg_color_light</item></style>//黑暗模式下的主题<style name="main_theme_dark" parent="Theme.AppCompat.DayNight.DarkActionBar"><item name="windowActionBar">false</item><item name="windowNoTitle">true</item><item name="main_text_color">@color/main_text_color_dark</item><item name="main_bg_color">@color/main_bg_color_dark</item></style>
- 找出适配黑暗模式需要的属性(主要是颜色属性:背景色、字体颜色和Icon颜色等并给属性赋值),类似如下定义:
供在上一步的style中引用,不同模式下提供不同的值<!-- 主要字体颜色--><attr name="main_text_color" format="color" /><!-- 主要背景颜色--> <attr name="main_bg_color" format="color" />//不同模式下的颜色属性值<color name="main_text_color_light">#000000</color><color name="main_text_color_dark">#ffffff</color><color name="main_bg_color_light">#ffffff</color><color name="main_bg_color_dark">#000000</color>
- 在activity和xml中引用我们自定义的属性:
//在xml文件中使用我们自定义属性
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="?attr/main_bg_color"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"android:textColor="?attr/main_text_color"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>//在BaseActivity中切换不同的主题,才能使我们自定义的属性生效,必须在setContentView()方法前设置:@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {if (getDarkModeStatus(this)) {setTheme(R.style.main_theme_dark);}else {setTheme(R.style.main_theme_light);}setContentView(R.layout.activity_main)}//为达到更好的适配效果,可在xml文件的activity节点下加入如下属性:
android:configChanges="uiMode"
ps:Icon的适配可以借助tint属性切换不同模式的颜色。
总结:到此为止,我们在两个模式下的切换就算完成了,你可以尝试开启系统的黑暗模式,可见我们的几面也会换成黑暗模式下的主题。如果有更多不同主题,那我们的工作就简单了,只需要在style文件下增加主题,并且加入主题下的颜色值就可以了。
AndroidQ(10)黑暗模式适配相关推荐
- android 10 apk 存储适配,AndroidQ(10) 分区存储适配方法
创建文件夹 下载文件 InputStream is = null; byte[] buf = new byte[2048]; int len = 0; FileOutputStream fos = n ...
- Android 适配黑暗模式10.0 Q
首先刚开始 我开始使用了第三方得 Android-skin-support库 因为我的项目是databinding的,升级到最新版本后 库不支持了,所以也是抛弃了,可能是因为这个库的作者工作忙或者是没 ...
- 微信又双叒更新7.0.10,除了黑暗模式,还有这些实用功能!
本文经授权转自差评公众号,如需转载请联系授权 本文经授权转自差评公众号,如需转载请联系授权 也不知道最近微信是怎么了,特别勤快... 可惜的是,虽然更新很勤快,但基本上都是在微调界面的层面,功能上一 ...
- 微信 黑暗模式 android,微信更新黑暗模式,但仅限Android 10,苹果用户无法使用...
17日晚,微信放出最新的安卓内测版 7.0.10. 从版本号来看,仅仅从 7.0.9 增加了 0.0.1. 不过经过 IT之家 的验证发现,在这一版本中,微信已经将大家一直想要的暗黑模式添加进去了. ...
- Chrome 74 稳定版发布,Windows 10 支持黑暗模式
开发四年只会写业务代码,分布式高并发都不会还做程序员? Chrome 74 稳定版已发布,具体版本号为 Chrome 74.0.3729.108.本次更新包含 39 项安全修复,以及稳定性和用户体 ...
- 暗黑模式(黑暗模式,深色模式)适配
暗黑模式(黑暗模式,深色模式)适配 全局关闭 打开Info.plist 项目配置文件,添加UIUserInterfaceStyle字段,key类型为String, 其value值设置为 Light模式 ...
- html5适配ios的黑暗模式
最近几天app里嵌入的wap页需要做ios黑暗模式的适配,尝试了一下H5的适配,现在把方法记录一下 具体方法如下:原有样式保持不变, 黑暗模式的样式追加在原有样式最后边并且需要嵌套在标签 @media ...
- iOS 13 适配,关闭黑暗模式(夜间模式)
关闭黑暗模式方式,在info.plist中添加 User Interface Style Light
- 微信windows版_安卓首发!微信黑暗模式来了
微信日前内测7.0.10版,除了修复一些问题之外,最大的变化是加入黑暗模式.不过,令人意外的是,竟然是安卓版首发了这个功能,不像以往那样是iOS首发.PS:请在该订阅号对话框发送"微信&qu ...
最新文章
- 4 月 24 日开播!基于神经网络建模的信息传播预测
- 反欺诈中所用到的机器学习模型有哪些?
- 高速串行自同步方式介绍及原理
- Silverlight使用webClient上传下载
- HDU - 1796 How many integers can you find(容斥原理)
- 深度迁移学习在花生叶部病害图像识别中的应用
- Unity3D播放背景音乐
- centos 7 下安装haproxy
- CentOS7和CentOS8 Asterisk 20.0.0 简单图形化界面5--libss7驱动7号信令
- php 跨域提交,php实现跨域提交form表单的方法
- c#控件chart制作自动更新的温湿度实时曲线图
- Unity 圆形图片实现
- DataGridView使用技巧十二:DataGridView Error图标表示的设定
- 2019牛客国庆集训派对day5 K(2017四川省赛)
- spring实战笔记
- 自制ADK To Win11PE,加入原生explorer,初步修改注册表(图文1.1万字,很细) (2)
- 英语语法回顾3——名词和名词性从句
- 2022年中国智能家居产业链图谱 | 产业链全景图
- NAS论文笔记:代理模型篇:NSGA Net V2: Evolutionary Multi-Objective Surrogate-Assisted Neural Architecture Sear
- 通达OA11.6复现