Android深色主题背景的实现及主题背景颜色互换


layout: post
title: Android深色主题背景的实现及主题背景颜色互换
date: 2-12-03 21:52:38 发布
author: ‘zhangtao’
header-img: ‘img/post-bg-2015.jpg’
catalog: false
tags:
-android
-android studio
-ide


目录

深色主题背景的优势:

如何实现Android的深色主题模式:

控制App内深色模式的自由切换:

深色主题背景的优势:

1.减少耗电量

2.提高深夜中的可视性

Android 10及更高版本中提供深色主题背景。

可以通过以下方法启用深色主题背景:

  • 使用系统设置启用深色主题背景。
  • 在 Pixel 设备上,选择“省电模式”将同时启用深色主题背景。

应用在 Android 10 (API 级别 29) 及更高版本上运行时,推荐的选项有所不同,目的是允许用户替换系统默认设置:

  • 浅色
  • 深色
  • 系统默认

如何实现Android的深色主题模式:

1.创建一个Empty Activity

img

2. 若没有style.xml,则按照该路径创建了一个res/values/styles.xml:

img

  1. 在style.xml中添加将应用的主题背景设置为继承DayNight主题背景:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">

或使用MaterialComponent 的深色主题背景:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">

4.在main中加入:

<LinearLayout
		      android:layout_width="wrap_content"
		      android:layout_height="wrap_content"
		      android:forceDarkAllowed="true">
</LinearLayout>

5.在主题中加入:

<style name="AppTheme.NoActionBar">
		    <item name="android:forceDarkAllowed">true</item>
</style>

6.最终能达成的效果:

img

 如要检查当前采用的是哪种主题背景,应用可以运行如下代码:

int currentNightMode = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK;
switch (currentNightMode) {
    
    
    case Configuration.UI_MODE_NIGHT_NO:
        break;
    case Configuration.UI_MODE_NIGHT_YES:
        break;
}

控制App内深色模式的自由切换:

AppCompatDelegate里包含这么几种: MODE_NIGHT_NO: 使用亮色主题,不使用夜间模式 MODE_NIGHT_YES:使用暗色主题,使用夜间模式 MODE_NIGHT_AUTO:根据当前时间自动切换 亮色/暗色主题 MODE_NIGHT_FOLLOW_SYSTEM(默认选项):设置为跟随系统,通常为 MODE_NIGHT_NO

可以使用Android Studio自带的方法setDefaultNightMode():

AppCompatDelegate.setDefaultNightMode()

注意:setDefaultNightMode()对整个系统生效。

另一个方法:

setLocalNightMode()可以对单独页面生效。

但只能由getDelegate().setLocalNightMode()调用。
洪伟棋
原文链接:https://blog.csdn.net/m0_58773350/article/details/128149967?spm=1001.2014.3001.5501

猜你喜欢

转载自blog.csdn.net/fjnu_se/article/details/128173251