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


相关知识:
安卓12开发者设置更流畅
随着技术的不断发展,Android系统也不断更新升级,为了匹配更高配置的设备和更好的用户体验,其中最重要的当属流畅性的优化。在Android12中,开发者设置做了很多优化,为我们带来了更加流畅的使用体验。一、流畅优化原理在Android12中,主要通过下列
2023-05-23
安卓10开发者选项怎么调试不了软件
安卓10开发者选项是安卓系统提供的一种调试模式,开启它可以使开发者通过USB连接调试软件。然而,在一些情况下,开发者选项却不能调试软件,一些原因包括:1. USB调试模式未打开:在“开发者选项”中,USB调试模式必须是打开的,否则无法通过USB调试软件。2
2023-05-23
php开发安卓软件大全
在移动互联网时代,安卓系统已经成为了最为流行的移动操作系统之一。而作为一个PHP开发者,如果想要学会安卓开发,就需要掌握一些基本的原理和技术。本文将着重介绍PHP开发安卓软件的一些关键技术和实现方法。一、使用PHP开发安卓程序一般来讲,PHP是运行在Web
2023-05-23
asp开发安卓应用
ASP是一种基于服务器端脚本的Web应用程序框架,通常与Microsoft的Internet Information Services (IIS) Web服务器一起使用。它提供了一种可扩展的编程模型,使开发人员能够创建Web应用程序的动态内容。ASP支持许
2023-05-23
无锡安卓app开发公司哪家靠谱
无锡有很多安卓APP开发公司,具体哪家靠谱要看你的需求是什么,预算有多少,以及你对公司的信任度如何。以下是介绍几家无锡比较靠谱的安卓APP开发公司:1. 网脉科技网脉科技成立于2008年,是一家专注于移动互联网应用的创新型科技公司。公司团队拥有多年的互联网
2023-04-28
怎么学习安卓app开发
学习安卓APP开发需要掌握Java语言以及Android应用程序开发的具体技术。以下是学习安卓APP开发的基本步骤和技能要求:1. 掌握Java语言基础知识,如类、对象、方法、继承等面向对象的基础知识。2. 学习Android开发环境(Android St
2023-04-28
广州安卓app开发要多少钱
广州安卓App开发费用因素解析在广州,开发一个安卓App的成本因素很多,其中包括项目需求、功能复杂度、开发团队及时间等。下面我们详细解析一下影响安卓App开发费用的因素。一、项目需求及功能复杂度1.功能模块:一个App的功能模块越多,需要的开发工作量就越大
2023-04-28
安卓移动打印app开发方案
为了实现安卓移动打印,需要开发一个安卓移动打印app。下面是安卓移动打印app开发方案的详细介绍:1. 选用打印SDK在开发安卓移动打印app时,首先需要选用一款打印SDK。常用的打印SDK有Zebra打印机SDK、EPSON打印机SDK、HP打印机SDK
2023-04-28
安卓手机app制作软件教学
安卓手机App的制作需要掌握Java语言以及Android SDK(Software Development Kit)开发工具包。下面我将详细介绍一下安卓手机App制作的原理和步骤。1. 环境搭建安装Android Studio,它是一个由谷歌公司开发的I
2023-04-28
安卓开发怎么改变app图片图标
在Android开发中,更改应用程序的图标是一个常见的任务。应用程序的图标是用户在设备上看到的第一印象,因此,为您的应用选择一个合适且具有吸引力的图标是非常重要的。以下是如何更改Android应用程序图标的详细步骤:1. 准备新图标首先,你需要准备一个新的
2023-04-28
如何开发安卓app应用
如何开发安卓app应用:原理与详细介绍开发一个安卓应用程序可以让您为用户带来有趣的功能,解决他们的问题,甚至可能为您带来商业价值。在这个教程中,我们将讨论如何开发安卓app应用的基本原理和一个详细的介绍。1. 概述安卓是谷歌开发的一种基于Linux的开源操
2023-04-28
什么设备封装安卓app
Android应用程序的打包是通过将Java代码和其他资源优化打包为DEX(Dalvik Executable)文件。Dex文件包括Android应用程序的所有组件,包括Activity,服务,广播接收器和内容提供程序。DEX文件还包含处理方法,注释和其他
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1