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


相关知识:
安卓9 如何打开开发者模式手机
在安卓9中打开开发者模式可以让用户进一步优化和自定义手机的功能。开发者模式提供了多种选项,允许用户访问示波器、USB调试、控制模拟位置等高级设置,因此非常适合开发者或对手机定制有兴趣的用户使用。下面我们将详细介绍如何在安卓9中打开开发者模式,并讲解其中的原
2023-05-23
安卓11的开发者模式怎么关
安卓11的开发者模式是一种功能强大的设置,它可以帮助用户更好地管理和优化其设备,包括允许使用USB调试、CPU監控、允许模拟位置等功能。但是,如果你不需要这些高级功能,或者由于设备安全性问题,需要禁用开发者模式,那么该怎么办呢?下面,我们就来详细介绍如何关
2023-05-23
vivo安卓11开启了开发者怎么关闭
vivo安卓11是vivo手机的最新版本,相较于vivo安卓10,在界面和交互方式上有了很大的改进。其中,开启开发者选项是让用户可以进一步定制和优化手机设置的一项功能。但是,如果你想关闭开发者选项,该怎么做呢?本文将详细介绍vivo安卓11开启开发者选项的
2023-05-23
eclipse开发安卓总是提示错误
Eclipse是一款广泛应用于安卓开发的IDE工具,但是经常会出现各种错误提示,如下面介绍一些可能出现的问题及解决方法。1. 缺失Android SDK安卓开发需要用到Android SDK,如果Eclipse没有找到此SDK,则会出现错误提示。解决方法是
2023-05-23
网站打包app安卓
网站打包成安卓APP可以理解为将网站内容进行封装成一个本地应用程序,用户可以直接通过安卓手机或平板等移动设备查看该网站内容,而不必再通过浏览器进行访问。下面介绍两种打包网站的方法:1. 使用第三方平台使用第三方平台,比如国内比较常用的AndroApp和易企
2023-04-28
有没有中文版本安卓app开发
有,下面是一些中文版本的安卓App开发相关的介绍或教程:1.《Kotlin开发Android App实战》这本书对于想学习Kotlin语言的开发者来说是非常好的选择,因为Kotlin语言非常适合用于Android开发。本书介绍了使用Kotlin构建Andr
2023-04-28
安卓手机app开发周期多少年
安卓手机App开发周期不是以年为单位计算的,而是根据项目需求、功能复杂度和开发团队经验等因素综合考虑的。一般而言,一个简单的App开发周期可能在几周到几个月之间,而复杂的App开发周期可能长达半年或更久。下面是一个关于安卓手机App开发周期的详细介绍:1.
2023-04-28
安卓开发教程制作app
Android 是目前世界上最流行的移动操作系统之一,移动设备市场的占有率也正在不断扩大。开发 Android 应用程序可以帮助您迎合这个不断扩大的市场,同时这也是一种非常有趣和有挑战性的工作。本文将详细介绍如何使用 Java 和 Android SDK
2023-04-28
安卓app阅读器开发
安卓app阅读器的开发原理主要分为以下几个部分:1.界面设计:界面设计是阅读器的最基本要素,要考虑到用户体验,包括字体大小、排版、颜色等。一般来说,阅读器的主要界面应该包括阅读页面、目录页面、书签页面、设置页面等。2.数据处理:阅读器需要对书籍进行解码、解
2023-04-28
安卓app开发服务器获取数据
在安卓 App 开发中,与服务器通讯获取数据是非常常见的操作。一般来说,服务器会提供各种接口供客户端调用,根据需要返回 JSON、XML 等数据格式。安卓 App 开发主要通过 HTTP 协议实现与服务器通讯,具体实现方式有以下几种:1. HttpUrlC
2023-04-28
安卓app开发快速入门
安卓(Android)是目前全球最流行的移动操作系统之一,因此,学会在安卓平台上进行 app 开发对于许多程序员来说是非常重要的。下面是安卓 app 开发的快速入门指南:1. 熟悉 Java 编程语言安卓应用程序是使用 Java 编程语言编写的。因此,开发
2023-04-28
eclipse开发安卓app步骤
Eclipse是一个非常流行的用于Java开发的集成开发环境(Integrated Development Environment,IDE)。尽管如今Android Studio已经成为官方推荐的Android开发工具,但仍然有许多用户喜欢使用Eclips
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1