Android 夜间模式主题风格切换
1. 跟进源码
1.1 String.xml
Settings 模块
<string name="night_display_title" msgid="2626451512200357686">"夜间模式"</string><string name="night_display_text" msgid="1837277457033025056">"夜间模式会将您的屏幕色调调节为琥珀色,让您在光线昏暗的环境下可以更舒适地查看屏幕或阅读文字,并可能有助于您入睡。"</string><string name="night_display_category_schedule" msgid="2044072617637348966">"排定时间"</string><string name="night_display_category_status" msgid="1952928783124400330">"状态"</string><string name="night_display_auto_mode_title" msgid="8046314360381608455">"自动开启"</string><string name="night_display_auto_mode_never" msgid="6723636142053240947">"永不"</string><string name="night_display_auto_mode_custom" msgid="6012300346981608242">"自定义时间安排"</string><string name="night_display_auto_mode_twilight" msgid="2123345097508167094">"日落到日出"</string><string name="night_display_start_time_title" msgid="8918016772613689584">"开始时间"</string><string name="night_display_end_time_title" msgid="8286061578083519350">"结束时间"</string><string name="night_display_summary_off" msgid="7009821232380000786">"关闭。<xliff:g id="ID_1">%1$s</xliff:g>"</string><string name="night_display_summary_off_auto_mode_never" msgid="2305501561697289620">"一律不自动开启。"</string><string name="night_display_summary_off_auto_mode_custom" msgid="1548073080728058384">"将在<xliff:g id="ID_1">%1$s</xliff:g>自动开启。"</string><string name="night_display_summary_off_auto_mode_twilight" msgid="2737328390752018845">"将在日落时自动开启。"</string><string name="night_display_summary_on" msgid="6626224414971753417">"开启。<xliff:g id="ID_1">%1$s</xliff:g>"</string><string name="night_display_summary_on_auto_mode_never" msgid="5217396859715040056">"一律不自动关闭。"</string><string name="night_display_summary_on_auto_mode_custom" msgid="887702685252504739">"将在<xliff:g id="ID_1">%1$s</xliff:g>自动关闭。"</string><string name="night_display_summary_on_auto_mode_twilight" msgid="8574989770628425398">"将在日出时自动关闭。"</string>
1.2 布局文件
Settings 模块 display_settings.xml,设置入口
<com.android.settings.display.NightDisplayPreferenceandroid:key="night_display"android:title="@string/night_display_title"android:fragment="com.android.settings.display.NightDisplaySettings"android:widgetLayout="@null"settings:keywords="@string/keywords_display_night_display" /><!-- Hide night mode for now<ListPreferenceandroid:key="night_mode"android:title="@string/night_mode_title"settings:keywords="@string/keywords_display_night_mode"android:summary="@string/night_mode_summary"android:entries="@array/night_mode_entries"android:entryValues="@array/night_mode_values" /> -->
1.3 逻辑控制
UiModeManager.setNightMode(value);进行夜间模式和白天模式的切换
package com.android.settings;public class DisplaySettings extends SettingsPreferenceFragment implementsPreference.OnPreferenceChangeListener, Indexable {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);final Activity activity = getActivity();final ContentResolver resolver = activity.getContentResolver();addPreferencesFromResource(R.xml.display_settings);mNightModePreference = (ListPreference) findPreference(KEY_NIGHT_MODE);if (mNightModePreference != null) {final UiModeManager uiManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);final int currentNightMode = uiManager.getNightMode();mNightModePreference.setValue(String.valueOf(currentNightMode));mNightModePreference.setOnPreferenceChangeListener(this);}...import android.app.UiModeManager;if (preference == mNightModePreference) {try {final int value = Integer.parseInt((String) objValue);final UiModeManager uiManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);uiManager.setNightMode(value);} catch (NumberFormatException e) {Log.e(TAG, "could not persist night mode setting", e);}}
2.Demo
1.原理
调用UiModeManager夜间模式接口 + value-night资源文件
2.实现逻辑
public class MainActivity extends Activity {//实现Android白天/夜间模式的关键类private UiModeManager mUiModeManager = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mUiModeManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);}public void night(View view) {mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_YES);}public void day(View view) {mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);}
3.布局文件
<Button
android:onClick="night"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="夜间模式" /><Button
android:onClick="day"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="白天模式" />
4.夜间模式和白天模式的资源文件
values-night
<?xml version="1.0" encoding="utf-8"?>
<resources><color name="colorPrimary">#3B5125</color><color name="colorPrimaryDark">#30E333</color><color name="colorAccent">#FF4081</color><color name="mybackground">#000000</color>
</resources>
5.运行结果
Android 夜间模式主题风格切换相关推荐
- android os夜间,Android夜间模式实现
查看我的全部开源项目[开源实验室] 欢迎加入我的QQ群:[201055521],本博客客户端下载[请点击] 本文原创,转载请注明地址:http://blog.kymjs.com/ 最近在做一个Andr ...
- Android夜间模式实践
前言 由于项目需要,近段时间开发的夜间模式功能.主流的方案如下: 1.通过切换theme实现 2.通过resource id映射实现 3.通过Android Support Library的实现 方案 ...
- android自动夜间模式吗,Android夜间模式的实现方案
原标题:Android夜间模式的实现方案 作者简介 本篇来自 Sunlight1024的投稿,详细地讲解了关于Android应用的夜间模式的实现,希望大家喜欢! Sunlight1024的博客地址: ...
- android自动夜间模式,夜晚的故事(android夜间模式实现)
夜幕降临,他走在马路上,回想着今天发生的一切,他不敢相信事情就这样发生了.他最终还是决定拨打那个电话,掏出手机,解锁屏幕,突然一道强光从屏幕里毫无预兆的发射出来.他一个踉跄倒在了马路中央.而他身后伴随 ...
- Android夜间模式最佳实践
转自:Android夜间模式最佳实践 由于Android的设置中并没有夜间模式的选项,对于喜欢睡前玩手机的用户,只能简单的调节手机屏幕亮度来改善体验.目前越来越多的应用开始把夜间模式加到自家应用中,没 ...
- Android夜间模式的实现方案
*** 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布** 对于一款阅读类的软件,夜间模式是不可缺少的.最初看到这个需求时候觉得无从下手,没有一点头绪.后来通过查阅资料发现Andr ...
- android 夜间模式设置
夜晚的故事(android夜间模式实现) 字数2003 阅读1393 评论11 喜欢18 夜幕降临,他走在马路上,回想着今天发生的一切,他不敢相信事情就这样发生了.他最终还是决定拨打那个电话,掏 ...
- 视频直播系统源码,平台在日间和夜间模式之间来回切换
视频直播系统源码,平台在日间和夜间模式之间来回切换实现的相关代码 import 'package:flutter/material.dart'; import 'package:flutter_wid ...
- android 夜间模式 框架,Android 夜间模式的三种实现
实现夜间模式有很多种方式,经过多次尝试,算是找到了一种性价比较高的方式. 主题方式 这是最正统的方式,但工作量巨大,因为要全局替换 xml 布局中所有硬编码的色值,将其换成主题色.然后通过换主题达到换 ...
最新文章
- CVPR2020论文解读:3D Object Detection三维目标检测
- python编程代码示例_python编程线性回归代码示例
- ModuleNotFoundError: No module named ‘pandas.rpy‘
- 也谈.Net中间语言——破解Delphi2CS行数和时间限制
- 中国充换电行业产销需求预测与转型升级战略分析报告2022-2028年版
- 在Windows Vista中使用符号链接
- spacy 英文模型下载_spaCy2.1中文模型包
- 怎么打钩_如何在excel中打钩
- 7个等级 容灾等级_猫奴的10个等级 你的奴性有多高?
- Windows7下完美绿色版无损分区软件Paragon Partition Manager
- MariaDB安装报1067错误解决方式
- 计算机网络调试套什么定额,第一章计算机网络系统设备安装工程定额.docx
- import * as 用法导入模块变量
- 初识计算机网络||概述
- Kaggle项目之Mobile App Store
- 互联网早报:腾讯内测游戏社交 App“NokNok”,对标 Discord
- c语言bmp位图读入,c语言 bmp位图差分
- 脑裂是什么,zk是如何解决脑裂问题的
- 系统集成项目管理(软考中级)第一章信息化知识
- 二维拉普拉斯方程的基本解
热门文章
- Uint8Array转普通数组
- A Speech Emotion Recognition Framework for Better Discrimination of Confusions-语音论文阅读
- 基于PSO算法的电网无功优化(附源码)
- echarts温度计
- TCRT5000-ESP32-micropython-实验-error:rst:0x10 (RTCWDT_RTC_RESET),boot:0x13(SPI_FAST_FLASH_BOOT)
- 向用户展示推荐算法,TikTok主动“透明化”
- dlib各个版本的下载以及安装教程和使用
- 全国首现无理由退房?别误解!退的是定金不是房款
- html发送邮件到默认邮箱,html mailto不发送电子邮件
- FTP上传错误----“200 Type set to I”