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


相关知识:
安卓akka开发
Akka是一个用于构建高可用、并发性能极佳的分布式系统的工具包。通过对Actor模型的实现,它提供了无锁、异步、非阻塞、事件驱动的编程方式,使得程序员可以更加轻松地编写可扩展和高性能的应用程序。Actor是Akka中的核心组件,它是一个轻量级的计算模型,由
2023-05-23
安卓aiar开发
AIAr是一款Android平台上的AI框架,旨在为开发者提供快速、易用、且高性能的AI开发平台。本文将结合AIAr官方文档,为读者介绍AIAr开发的原理和详细介绍。AIAr基础首先,我们需要明确AIAr的基础组件——模型和引擎。其中,模型是指以图形、模拟
2023-05-23
wpf开发安卓
WPF(Windows Presentation Foundation)是Microsoft Windows应用程序框架的一部分,用于构建应用程序用户界面。WPF基于XAML语言,它能够以非常直观的方式在应用程序中定义界面元素,并支持丰富的特效、3D图形、
2023-05-23
python 开发安卓软件
Python是一种高级编程语言,其可读性强、简洁明了、易于学习,被广泛应用于Web开发、数据科学、机器学习等领域。然而,Python本身并不直接支持开发安卓软件,因为安卓的开发语言为Java或Kotlin。下面会详细介绍如何使用Python开发安卓软件。1
2023-05-23
kotlin开发的安卓是原生的吗
Kotlin 是一种新兴的编程语言,它基于 JVM(Java Virtual Machine)运行,旨在为 Java 提供更好的且更简洁的代码。在 Android 应用程序开发领域中,Kotlin 得到了广泛的应用。很多开发者都认为 Kotlin 能够使得
2023-05-23
java开发安卓用什么框架
Java是一种面向对象的编程语言,被广泛应用于开发各种应用程序,尤其是在移动应用程序开发领域。安卓是基于Java的移动端操作系统,Java开发者可以利用各种框架,在安卓上快速开发高效的应用程序。本文将介绍Java开发安卓时常用的框架。1. Android
2023-05-23
c语言可以开发安卓程序吗
C语言作为一种高级编程语言,在计算机编程和软件开发领域里有着广泛的应用。然而,对于安卓应用开发这种相对轻量级的领域来说,C语言的应用相对较少,大多数安卓应用都是用Java、Kotlin、Swift等高级编程语言开发的。那么,C语言可以开发安卓程序吗?下面我
2023-05-23
安卓外卖app开发实例图
安卓外卖APP的开发主要包括以下步骤:1.需求分析:确定APP的功能和流程,包括用户注册、登录、浏览商品、下单、支付、评价等功能。2.设计数据库:根据需求设计数据库表结构,并确定各表之间的关系,比如订单表和商品表之间的关联关系。3.客户端UI设计:设计AP
2023-04-28
安卓tv版影视app开发
安卓TV版影视app开发需要考虑到用户在TV界面下操作的特性,主要区别在于UI设计、交互方式以及对遥控器等设备的支持。以下是一个安卓TV版影视app的基本开发流程:1. 界面设计:在TV界面下,需要采用大图标、大字号、大面积的设计风格,便于用户从远处快速识
2023-04-28
安卓app开发源码下载
安卓应用开发源码下载(原理与详细介绍)安卓(Android)是谷歌开发的一款基于Linux内核的开放源代码操作系统,主要用于移动设备,如智能手机和平板电脑。安卓应用开发采用Java语言,并使用Android Studio作为开发工具。以下是安卓应用开发的基
2023-04-28
安卓app制作学习
安卓app制作,有两种主要的途径:一种是通过Java语言使用Android Studio进行开发,另一种则是使用基于HTML5技术的跨平台开发框架,例如Ionic和PhoneGap等。以下介绍第一种方法。安卓app制作主要涉及以下技术:1. Java语言:
2023-04-28
安卓app 开发平台
安卓app开发平台是一种软件开发平台,可以用于创建基于Android操作系统的应用程序。Android开发平台提供了一套完整的开发工具和资源,包括软件开发工具包(SDK)、虚拟机、模拟器等。主要特点:1.基于Java语言:Android应用程序开发使用Ja
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1