安卓9开发者选项夜间模式为什么时有时无

在Android 9之后,开发者选项加入了一个夜间模式选项。当开启夜间模式后,手机的背景色会发生变化,变为黑色或者其他暗色系,以保护用户的眼睛。但是有时候,即使开启了夜间模式,某些应用还是会以白色为主题色。这是为什么呢?

原理:

Android 系统中引入了一个标准的夜间模式,这个模式并不依赖于应用程序,而是在底层通过使用背景为黑色的视图渲染整个系统的UI。应用程序则需要提供两套主题:明亮主题和深色主题。当夜间模式开启时,Android 会将系统主题从明亮主题切换到深色主题。

当应用程序使用了Android系统提供的主题时,夜间模式能自动适应该应用程序的深色主题。但是,当应用程序使用自己的主题时,就要靠开发者自己去适配夜间模式了。

详细介绍:

1. 深色主题的支持

为了支持夜间模式,应用程序需要提供两套主题:明亮主题和深色主题。在Android 9之前,主题设置是在应用程序的res/color.xml文件中设置的。我们可以通过定义颜色的方式来设置主题色,如白色或黑色等。而随着夜间模式的引入,我们需要在res/values目录下新建一个文件夹res/values-night,并在该目录下再次新建一个color.xml文件,来设定夜间模式下应用的主题色。在Android系统中,所有为资源文件设置后缀名为“-night”的文件,都会被视为夜间模式下对应的资源文件。Android会根据当前的界面风格,来使用对应的资源文件。

2. 引用系统主题

为了让应用程序在夜间模式下自适应深色主题,我们可以使用Android提供的Material Design主题。这些主题可以通过在styles.xml中使用parent属性来引用。Material Design提供了灰色和黑色两种深色主题。我们可以通过引用这些主题,来为应用程序的UI自动适配夜间模式。

3. 动态适配

有些应用程序可能采用了动态主题样式,即允许用户通过各种方式来选择主题,如更改背景色、文字颜色和字体等。这时,我们需要在运行时动态地修改主题样式,来实现夜间模式的适配。我们可以使用如下伪代码来达到该目的:

```kotlin

if(isNightMode()) {

setTheme(R.style.AppTheme_Night)

}else{

setTheme(R.style.AppTheme_Light)

}

```

4. Android 10的新特性

在Android 10中,夜间模式得到了进一步完善。系统提供了三种模式:自动、开启、关闭。当选择自动模式时,系统会根据当前时间自动切换到夜间模式。而且,Android 10引入了一个新的属性,可以通过将其设置为“yes”来使应用程序支持夜间模式:android:navigationBarColor=”#000000”或者在Activity的主题中设置:android:windowDrawsSystemBarBackgrounds=”true” 和android:statusBarColor=”@color/colorPrimaryDark”。

总结:

为了适应夜间模式,应用程序需要提供深色主题,而在适配时,我们可以引用Android提供的Material Design主题,也可以动态适配主题。我们还可以借助Android 10的新特性,将应用程序适配更加完善。


相关知识:
uniapp开发安卓和开发小程序
UNIAPP是一个基于Vue.js框架的开发平台,支持一次编写,多端发布的跨平台开发工具。可以用它开发小程序、安卓应用和IOS应用程序,节约了我们重复造轮子的时间。下面介绍一下UNIAPP在开发安卓和小程序时的原理和详细流程。1. 开发小程序的原理和流程(
2023-05-23
qt开发安卓app 是否成熟
QT(可视化工具集)已成为一种流行的跨平台程序开发框架。QT 开发人员在过去几年中一直以其用于开发安卓应用程序的能力引起关注。然而,对于许多兼容性和性能问题存在大量争议,当涉及到安卓应用程序时,该框架是否成熟引起了人们的质疑。要了解 QT 开发安卓应用程序
2023-05-23
asp
ASP.NET是一种Web开发框架,主要用于.NET平台上的服务器端应用程序开发,常用于开发企业级应用和Web应用程序。而Android应用开发则是一种移动端应用程序开发。两者的开发领域不同,所以ASP.NET不能直接用于开发安卓应用。但是,我们可以通过使
2023-05-23
64位win7安卓开发
在介绍64位Win7安卓开发之前,先了解一些相关的概念和背景知识。什么是64位操作系统?计算机在运行时需要CPU的支持,而CPU有32位和64位之分,32位CPU只能寻址4GB内存,而64位CPU最多可以寻址17.2亿GB的内存。因此,64位操作系统能够支
2023-05-23
苹果加安卓app原生开发
苹果和安卓是两种不同的移动操作系统,因此开发iOS和Android应用程序需要使用不同的技术和工具。苹果的应用程序使用Objective-C或Swift编写,使用Xcode集成开发环境。开发者必须熟悉iOS SDK框架、Cocoa Touch框架、Core
2023-04-28
开发安卓app发布到应用市场
开发安卓App并发布到应用市场涉及多个步骤,包括设计、开发、测试、上架和推广。本文将详细介绍每个步骤和相关知识,帮助初学者了解整个过程。一、准备工作1. 设备和开发环境:需要一台电脑(Windows、Mac或Linux)以及安装Android Studio
2023-04-28
安卓app开发的外文文献综述
下面是一份关于安卓应用开发的综述,主要介绍了安卓应用程序的基本原理和开发方法。一、安卓应用程序的基本原理Android是一种基于Linux操作系统的移动设备应用程序平台,它允许开发人员创建基于Java的应用程序,这些程序可以在各种各样的设备上运行。安卓开发
2023-04-28
安卓app开发和
安卓App开发是指基于安卓系统进行应用程序的开发过程,一般使用Java语言作为开发语言和Android Studio作为开发工具。 安卓App开发常常可以概括为:1. 学习Java编程语言Java语言是Android开发的主要语言,因此熟练掌握Java语言
2023-04-28
基于安卓开发的疫情防控通知app
疫情防控通知App是一款基于安卓平台的应用程序,旨在帮助用户获取疫情相关的信息和通知。在这篇文章中,我们将详细介绍如何基于安卓开发一款疫情防控通知App,包括原理及主要功能,同时为初学者提供一个简明易懂的教程。一、疫情防控通知App原理和功能介绍:1. 疫
2023-04-28
免编程安卓app开发
要进行免编程的安卓app开发,需要使用一些专门的平台或工具,如下所述:1. Appy Pie: 这是一款非常流行的免编程安卓app开发平台,可以允许用户创建各种类型的应用程序,包括商业应用程序、游戏、新闻、娱乐应用程序等等。用户只需要使用拖放式的界面设计工
2023-04-28
人脸识别开发安卓手机app
在这篇文章中,我们将学习如何为Android手机开发一个简单的人脸识别应用程序,以及它背后的一些基本原理。人脸识别技术已经被广泛应用于各种场景,如手机解锁、门禁系统、支付验证等。本文将帮助您了解、理解这一有趣且实用的技术。人脸识别的基本原理:人脸识别技术可
2023-04-28
中山安卓商城app开发哪家好
中山安卓商城app的开发需要找一家专业的移动应用开发公司进行合作。在选择合作公司时,需要考虑以下几个方面:1. 公司规模和资质:选择一家有一定规模和资质的公司可以保证项目开发的稳定性和可靠性。2. 技术实力:需要选择一家拥有丰富技术经验、技术实力雄厚的公司
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1