Android-P夜间模式
0 前言
Android-P可通过“Developer options > Night mode”打开夜间模式,本文研究其配置和效果。
验证环境:Pixel 3a、模拟器
1 设置
![](/assets/blank.gif)
上图对应XML配置如下:
<ListPreferenceandroid:key="dark_ui_mode"android:title="@string/dark_ui_mode"android:dialogTitle="@string/dark_ui_mode_title"android:entries="@array/dark_ui_mode_entries"android:entryValues="@array/dark_ui_mode_values" />
<!-- @file: packages/apps/Settings/res/xml/development_settings.xml -->
![](/assets/blank.gif)
上图对应XML配置如下:
<!-- Titles for ui dark mode preference. --><string-array name="dark_ui_mode_entries" ><item>Automatic (based on time of day)</item><item>Always on</item><item>Always off</item></string-array><!-- Values for ui dark mode preference. --><string-array name="dark_ui_mode_values" translatable="false" ><item>auto</item><item>yes</item><item>no</item></string-array>
<!-- @file: packages/apps/Settings/res/values/arrays.xml -->
对应代码如下:
packages/apps/Settings/src/com/android/settings/development/DarkUIPreferenceController.java
frameworks/base/core/java/android/app/UiModeManager.java
frameworks/base/core/java/android/app/IUiModeManager.aidl
frameworks/base/services/core/java/com/android/server/UiModeManagerService.java
从下面函数来看,需要“MODIFY_DAY_NIGHT_MODE”权限才能设置夜间模式:
@Overridepublic void setNightMode(int mode) {if (isNightModeLocked() && (getContext().checkCallingOrSelfPermission(android.Manifest.permission.MODIFY_DAY_NIGHT_MODE)!= PackageManager.PERMISSION_GRANTED)) {Slog.e(TAG, "Night mode locked, requires MODIFY_DAY_NIGHT_MODE permission");return;}...}
// @file: frameworks/base/services/core/java/com/android/server/UiModeManagerService.java
设置结果保存到如下字段中:
public static final String UI_NIGHT_MODE = "ui_night_mode";
// @file: frameworks/base/core/java/android/provider/Settings.java
可通过下面命令查看当前设置:
adb shell settings get secure ui_night_mode
# 0 - Automatic (based on time of day)
# 1 - Always on
# 2 - Always off
2 实现
TODO
参考资料
[1]Android P 开启和关闭夜间模式以及调节浓度的方法
[2]android 夜间模式
[3]简洁优雅地实现夜间模式
[4]Android夜间模式 - DayNight Mode的使用
[5]日夜切换两种模式
[6]Android中夜间模式的三种实现方式
[7]Android日间模式夜间模式切换(无需重启)
Android-P夜间模式相关推荐
- android menu夜间模式,Android常用技巧夜间模式开发浅析
前言 Android的夜间模式主要主用于阅读方面,在QQ,微信读书,新闻阅读类一般会有相应的功能,本文主要介绍整体APP的夜间模式以及webview中夜间模式的实现. 效果图展示 功能实现简介 APP ...
- 【android】夜间模式简单实现
完整代码,请参考我的博客园客户端,git地址:http://git.oschina.net/yso/CNBlogs 关于阅读类的app,有个夜间模式真是太重要了. 那么有两种方式可以实现夜间模式 1: ...
- android官方夜间模式,Android夜间模式实践
前言 由于项目需要,近段时间开发的夜间模式功能.主流的方案如下: 1.通过切换theme实现 2.通过resource id映射实现 3.通过Android Support Library的实现 方案 ...
- Android中夜间模式的三种实现方式
参考:https://www.jianshu.com/p/f3aaed57fa15 在本篇文章中给出了三种实现日间/夜间模式切换的方案: 使用 setTheme 的方法让 Activity 重新设置主 ...
- android自动夜间模式,Android实现日夜间模式的深入理解
在本篇文章中给出了三种实现日间/夜间模式切换的方案,三种方案综合起来可能导致文章的篇幅过长,请耐心阅读. 1.使用 setTheme的方法让 Activity重新设置主题: 2.设置 Android ...
- android自动夜间模式吗,Android夜间模式的实现方案
原标题:Android夜间模式的实现方案 作者简介 本篇来自 Sunlight1024的投稿,详细地讲解了关于Android应用的夜间模式的实现,希望大家喜欢! Sunlight1024的博客地址: ...
- android studio夜间模式,android studio怎样实现夜间模式
满意答案 noxlqub 2016.05.01 采纳率:51% 等级:7 已帮助:210人 关于阅读类的app,有个夜间模式真是太重要了. 那么有两种方式可以实现夜间模式 1:修改theme,重 ...
- android切换夜间模式吗,Android切换夜间模式
1.设置主题DayNight 2.保证Activity继承AppCompatActivity 3.添加夜间模式对应的资源文件 此处最好把对应的color.drawable都设置相应的夜间资源,遇到过在 ...
- Android自动启用夜间模式,Android – 切换夜间模式
什么是夜间主题以及如何在ANDROID中使用它? Support Library 23.2(应用于API14+)推出了适合Android Apps的DayNight主题,它将根据时间和用户最后一次提供 ...
- android官方夜间模式,Android实现夜间模式的方法(一)
版权声明:本文为博主原创文章,未经博主允许不得转载. 最近整理了几篇在乐视实习时写的文章,都是一些简单的技术调研,Android夜间模式是当时做技术分享的内容,供大家参考,欢迎一起讨论~ 一.夜间模式 ...
最新文章
- 熟悉Python Interpreter解释器
- 在 Msys pacman安装vim后遇到的abcd与backspace问题..
- java中字母用什么单词赋值_Java初学
- Linux下执行程序出现 Text file busy 时的解决办法。
- Python生成随机高斯模糊图片
- Kaggle新赛 | 医学影像插管分类,总奖池 5 万美金
- 星辰大海:华为用“鲲鹏+昇腾”计算双擎再出发
- fiddler设置中文版本_Python3.x+Fiddler 抓取 APP 数据
- 项目功能大全,让你的项目一天搞定
- intel CPU详解
- Q85:对比“直接光照”和“间接光照”的反射模型
- vfp 中调用硬盘_硬盘你真的选对了么?固态真的好用么?细数硬盘这些年出现的坑!...
- 通用 USB 重定向和客户端驱动器注意事项
- 树莓派之BT下载器实现
- java网络编程---使用URL爬取歌曲
- PB中调用OLE打开word文档
- 关闭服务器windows server的IE浏览器的增强安全配置
- Unity debugger detected e0030 sentinel ldk protection system
- 二叉树最强总结(python实现)
- 【Echarts】设置主题、扇形格式化