0 前言

Android-P可通过“Developer options > Night mode”打开夜间模式,本文研究其配置和效果。

验证环境:Pixel 3a、模拟器

1 设置

图1.1 Night mode

上图对应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 -->

图1.2 Set Night mode

上图对应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夜间模式相关推荐

  1. android menu夜间模式,Android常用技巧夜间模式开发浅析

    前言 Android的夜间模式主要主用于阅读方面,在QQ,微信读书,新闻阅读类一般会有相应的功能,本文主要介绍整体APP的夜间模式以及webview中夜间模式的实现. 效果图展示 功能实现简介 APP ...

  2. 【android】夜间模式简单实现

    完整代码,请参考我的博客园客户端,git地址:http://git.oschina.net/yso/CNBlogs 关于阅读类的app,有个夜间模式真是太重要了. 那么有两种方式可以实现夜间模式 1: ...

  3. android官方夜间模式,Android夜间模式实践

    前言 由于项目需要,近段时间开发的夜间模式功能.主流的方案如下: 1.通过切换theme实现 2.通过resource id映射实现 3.通过Android Support Library的实现 方案 ...

  4. Android中夜间模式的三种实现方式

    参考:https://www.jianshu.com/p/f3aaed57fa15 在本篇文章中给出了三种实现日间/夜间模式切换的方案: 使用 setTheme 的方法让 Activity 重新设置主 ...

  5. android自动夜间模式,Android实现日夜间模式的深入理解

    在本篇文章中给出了三种实现日间/夜间模式切换的方案,三种方案综合起来可能导致文章的篇幅过长,请耐心阅读. 1.使用 setTheme的方法让 Activity重新设置主题: 2.设置 Android ...

  6. android自动夜间模式吗,Android夜间模式的实现方案

    原标题:Android夜间模式的实现方案 作者简介 本篇来自 Sunlight1024的投稿,详细地讲解了关于Android应用的夜间模式的实现,希望大家喜欢! Sunlight1024的博客地址: ...

  7. android studio夜间模式,android studio怎样实现夜间模式

    满意答案 noxlqub 2016.05.01 采纳率:51%    等级:7 已帮助:210人 关于阅读类的app,有个夜间模式真是太重要了. 那么有两种方式可以实现夜间模式 1:修改theme,重 ...

  8. android切换夜间模式吗,Android切换夜间模式

    1.设置主题DayNight 2.保证Activity继承AppCompatActivity 3.添加夜间模式对应的资源文件 此处最好把对应的color.drawable都设置相应的夜间资源,遇到过在 ...

  9. Android自动启用夜间模式,Android – 切换夜间模式

    什么是夜间主题以及如何在ANDROID中使用它? Support Library 23.2(应用于API14+)推出了适合Android Apps的DayNight主题,它将根据时间和用户最后一次提供 ...

  10. android官方夜间模式,Android实现夜间模式的方法(一)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 最近整理了几篇在乐视实习时写的文章,都是一些简单的技术调研,Android夜间模式是当时做技术分享的内容,供大家参考,欢迎一起讨论~ 一.夜间模式 ...

最新文章

  1. 熟悉Python Interpreter解释器
  2. 在 Msys pacman安装vim后遇到的abcd与backspace问题..
  3. java中字母用什么单词赋值_Java初学
  4. Linux下执行程序出现 Text file busy 时的解决办法。
  5. Python生成随机高斯模糊图片
  6. Kaggle新赛 | 医学影像插管分类,总奖池 5 万美金
  7. 星辰大海:华为用“鲲鹏+昇腾”计算双擎再出发
  8. fiddler设置中文版本_Python3.x+Fiddler 抓取 APP 数据
  9. 项目功能大全,让你的项目一天搞定
  10. intel CPU详解
  11. Q85:对比“直接光照”和“间接光照”的反射模型
  12. vfp 中调用硬盘_硬盘你真的选对了么?固态真的好用么?细数硬盘这些年出现的坑!...
  13. 通用 USB 重定向和客户端驱动器注意事项
  14. 树莓派之BT下载器实现
  15. java网络编程---使用URL爬取歌曲
  16. PB中调用OLE打开word文档
  17. 关闭服务器windows server的IE浏览器的增强安全配置
  18. Unity debugger detected e0030 sentinel ldk protection system
  19. 二叉树最强总结(python实现)
  20. 【Echarts】设置主题、扇形格式化

热门文章

  1. 面向对象编程:一个灾难性的故事
  2. i7 1165g7和i7 11390H哪个好
  3. Htc one m7 港版5.12.708.3官方RUU系统备份
  4. 内存飞踩问题的几点思考
  5. 计算深度学习评价指标Precision、Recall、F1
  6. 如何利用ISO镜像文件制作本地yum源教程
  7. L1-008 求整数段和(Python3)
  8. 物联网课程设计:环境监测系统设计与实现
  9. Primavera P6 Professional R21.12 正式发布(附下载地址)
  10. MarchingCubes算法