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


相关知识:
qt开发可安装的安卓应用
Qt是一种跨平台的应用程序开发框架,可以用于开发各种类型的应用程序,包括桌面应用程序、移动应用和嵌入式应用。在Qt中,可以使用C++编写代码并使用丰富的API来实现功能。在本文中,我们将介绍如何使用Qt开发可安装的安卓应用程序的原理和实现方法。1.环境搭建
2023-05-23
python能开发ios与安卓吗
Python 是一种高级语言,其主要用途是快速的开发功能强大的应用程序,而且这些程序可以在不同的平台上运行。iOS 和 Android 是两个主流的移动操作系统,它们分别运行在苹果手机和安卓手机上。与这两个移动操作系统兼容的编程语言很多,但是 Python
2023-05-23
hbuilder开发安卓打包
HBuilder是一款基于html5进行开发的集成开发环境,除了支持网页开发之外,也具有快速开发手机应用的功能。通过HBuilder的打包功能,我们可以将我们开发完成的应用,快速打包成APK文件进行发布和分享。HBuilder打包的原理基于Cordova,
2023-05-23
cs6开发安卓手机app
在CS6中开发安卓手机APP,需要使用Adobe Flash Professional CS6和Adobe AIR SDK,以下是详细的介绍和步骤:1. 环境配置首先需要安装最新版的Adobe Flash Professional CS6和Adobe AI
2023-05-23
arm嵌入式开发工具安卓
ARM嵌入式开发工具安卓是一款用于ARM架构嵌入式开发的工具,它主要集成了常用的编译器、调试器、串口工具等软件,并且针对安卓系统做了相应的优化,可以方便地进行嵌入式开发的相关工作。该工具主要由以下几部分构成:1. 编译器编译器是嵌入式开发中必不可少的工具,
2023-05-23
第一代安卓app怎么开发
第一代安卓应用开发主要依赖于 Android 1.0 和 1.1 系统。在这个时期,安卓应用开发主要通过 Java 语言和 Android SDK(软件开发工具包)实现。下面是一些要点和详细介绍:1. 环境配置与安装在进行安卓应用开发时,首先需要配置好开发
2023-04-28
杭州安卓app开发如何收费
一、收费方式在杭州地区,Android App开发的收费方式多种多样,主要包括以下几种: 1. 按工时收费:这种收费方式是针对那些较为复杂、时间比较长的App项目,由开发者根据开发工作量来计算客户的收费金额。一般来说,开发者在收费时,会将工时价目表告诉客户
2023-04-28
开发安卓手机app
开发安卓手机应用程序(APP)是一个涉及多个步骤和组件的过程。这篇文章将为您介绍应用程序的开发原理和详细过程,涵盖了从构思到实现到发布的各个阶段。1. 熟悉Android平台开始开发Android应用程序之前,您需要了解Android平台的基础知识和特性。
2023-04-28
安卓绘图app开发
在安卓绘图App开发中,需要使用到Android Studio开发环境,以及Java或Kotlin等语言进行编程。以下为开发绘图App的主要原理:1. 布局设计:设计绘图界面,包括绘图区域、工具栏、颜色选择器等。可以使用XML进行布局设计,也可以使用Jav
2023-04-28
安卓app开发软件在电脑上运行吗
安卓app开发软件可以在电脑上运行和开发,这主要是因为安卓操作系统的开放性和良好的跨平台性使得开发者可以使用多种平台和工具来进行开发。以下是安卓app开发在电脑上运行的具体原理和介绍:1. JDK环境配置:在电脑上编写安卓应用程序,首先需要配置JDK环境。
2023-04-28
安卓app开发能加阴影吗
在安卓的UI设计中,阴影效果是一个非常常见的设计元素,可以增添UI界面的立体感和细节感。在安卓中,实现阴影效果主要有两种方式:一是在布局的XML文件中添加属性;二是使用代码实现。一、在XML布局中添加属性安卓SDK提供了API实现阴影效果,在布局文件中需要
2023-04-28
安卓app开发师工资
在这篇文章中,我们将深入探讨安卓应用开发者的薪资,包括各种因素、国家/地区差异以及如何提高自己的薪资。作为一名安卓应用开发者,了解薪资情况对于职场规划与发展是非常有益的。一、安卓应用开发者薪资的影响因素:1. 经验:开发者的经验是影响薪资的主要因素之一。实
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1