安卓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的新特性,将应用程序适配更加完善。


相关知识:
安卓app 开发教程
Android平台上的应用程序是使用Java语言编写的,它们以Dalvik虚拟机上运行的dex格式提供。首先要开始开发Android应用程序,您需要安装Java Development Kit(JDK),Android SDK和Android Studio
2023-05-23
python安卓开发环境
Python是一种高级编程语言,具有简单易学、代码易读的特点,被广泛应用于人工智能、科学计算、Web开发等领域。而安卓开发是目前市场上最为火热的行业之一。如何将Python应用在安卓开发中呢?下面就为大家介绍如何搭建Python安卓开发环境。Python安
2023-05-23
java 开发安卓应用
Java语言是许多安卓应用开发者的首选开发工具。Java语言简单易学,语法规范,跨平台性强,广泛被应用在安卓应用的开发中。在本文中,我们将详细介绍Java开发安卓应用的原理及基本知识。1. 安卓应用的开发环境安卓开发需要的开发环境主要有Java Devel
2023-05-23
记账本app安卓开发
## 记账本App安卓开发:原理与详细介绍### 概述记账本App是一款用于帮助用户记录个人收入与支出情况的应用。通过用户的输入,App可以帮助整理、分析并可视化用户的财务状况,提供更加明确的消费习惯和财务规划。本教程将向您介绍记账本App的原理以及开发过
2023-04-28
安卓无需打包统计app数据
在安卓应用程序开发中,通常会使用第三方统计工具来跟踪应用程序的使用情况和分析应用程序的性能表现。这些统计工具通常要求应用程序开发者在应用程序中集成其SDK,并通过打包将其插入到应用程序中。但是,通过一些技巧可以使得统计工具在不需要打包的情况下实现应用程序性
2023-04-28
安卓开发必备app
作为安卓开发人员,必备的应用程序具有多种功能,包括 IDE、源码管理工具、测试工具、性能分析工具等等。在下面的段落中,我将简要地介绍其中几个应用程序。1. Android StudioAndroid Studio 是谷歌公司正式推出的一个完整的 Andro
2023-04-28
安卓开发app图标过大
在安卓开发中,每个 app 总会有一个图标,它作为应用程序在桌面或应用程序列表中的入口,扮演着非常重要的角色。然而,有些时候这个图标的大小可能会导致应用程序无法正常显示,例如在某些特定的设备上,它可能过大而被截断。下面我们来介绍一下造成这个问题的原因以及解
2023-04-28
安卓商城app开发定制软件
标题: 安卓商城App开发定制软件:原理与详细教程引言:随着移动互联网的普及,越来越多的企业和创业者都在尝试将自己的业务迁移到手机平台。作为市场份额最大的移动操作系统之一,安卓平台的商城App已经成为了吸引用户和获取利润的重要途径。在这篇文章中,我们将介绍
2023-04-28
安卓app和ios哪个开发简单
安卓和iOS是最为流行的移动操作系统,都有着自己的应用程序开发工具和开发语言,因此对于不同的开发人员来说,其难易程度可能会有所不同。下面是一些关于安卓和iOS开发的基本介绍:1. 安卓开发安卓开发通常采用Java编程语言,并使用Android Studio
2023-04-28
哪里学安卓app开发
安卓APP开发是当前最热门的开发方向之一,学习好安卓APP开发可以帮助你开发出功能强大且与众不同的APP应用。以下是安卓APP开发的学习指南:1.学习Java编程语言:Android开发基于Java。所以,学习Java编程是学习Android开发的第一步。
2023-04-28
厦门安卓app开发公司哪家好
在厦门,有很多优秀的安卓app开发公司,以下是其中几家值得推荐的公司:1. 厦门迅捷科技有限公司厦门迅捷科技有限公司是一家专注于移动应用开发的公司,提供安卓app开发、ios app开发、移动互联网产品策划、UI设计等服务。该公司已经为多个行业客户开发上线
2023-04-28
xcode开发安卓app
Xcode 开发 Android 应用(原理和详细介绍)尽管 Xcode 主要是为了开发 iOS、macOS、watchOS 和 tvOS 应用而知名,但你可能想知道这个流行的苹果开发工具是否也能用于开发 Android 应用。在本教程中,我们将介绍 Xc
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1