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


相关知识:
安卓4
开发者选项是安卓手机系统中的一个特殊设置,只有在开启该选项后,才能进行一些高级的操作,比如USB调试和模拟位置等。本文将会详细介绍开发者选项的原理和使用方法,让读者更好地了解和掌握这一选项。首先,我们需要打开开发者选项。在手机中打开设置应用,然后找到“关于
2023-05-23
安卓 开发小程序
安卓开发小程序是指在安卓平台上创建一个可以运行的小型程序,可以通过微信、支付宝等应用进行访问和使用。相比于传统的安卓应用程序,小程序具有更轻量化、更简单易用的特点,因此在近几年受到了广泛关注和应用。小程序是基于 web 技术实现的,采用了 Vue.js 等
2023-05-23
uniapp原生安卓开发哪个好
UniApp是一款基于Vue.js的跨平台开发框架,可以用于开发移动应用、小程序、H5等,支持多端打包。而在UniApp中,原生安卓开发方案有很多种。本文将介绍其中三种原生安卓开发方案,并对它们进行比较和评估,来帮助你选择最合适的方案。一、Android
2023-05-23
html5 开发安卓应用
在过去,安卓应用的开发只能使用Java等编程语言进行开发,而如今HTML5技术的普及,开发人员也可以使用HTML5语言进行安卓应用的开发。在这篇文章中,我将介绍HTML5开发安卓应用的原理以及详细的介绍。一. 原理1. Android WebviewAnd
2023-05-23
golang安卓程序开发
Go语言是谷歌开发的一种开源编程语言,该语言以其高效、高速执行和支持并发编程等特点而备受开发者的喜爱。在移动开发领域,Go语言也备受欢迎,特别是在Android开发中。那么,本文将介绍使用Go语言开发Android程序的原理及详细介绍。## Android
2023-05-23
福州安卓app制作报价
福州安卓App制作的价格因项目而异。一般而言,基本的App制作涉及到以下几个方面的成本:1. 设计制作费:包括UI设计、Logo设计等,这些都是整个App开发中必须要涉及到的,价格根据设计师的级别、工作量等因素决定。2. 开发费用:安卓App的开发涉及到技
2023-04-28
安卓电商app开发
安卓电商App开发的基本原理是通过Java语言编写代码实现App的功能,再通过Android SDK提供的组件和框架来构建完整的应用程序。以下是详细介绍:1.需求分析和UI设计在开发任何应用程序之前,您需要对您的开发目标和目标受众进行详细的分析和调查,并确
2023-04-28
安卓开发基础app
安卓应用开发基础:创建一个简单的Android应用安卓(Android)是谷歌开发的一款基于Linux内核的开源操作系统,主要用于手机、平板等触摸屏设备。要开发一个Android应用,你需要了解一些基本概念和Android开发环境。在本教程中,我们将引导你
2023-04-28
安卓开发专属连线app
在本篇文章中,我们将简要介绍如何创建一个安卓开发专属连线应用(例如实现一对一的即时通讯),以及其背后的一些核心技术和原理。此类应用可广泛用于在线咨询,社交网络及各类在线技术支持等场景。安卓连线应用开发概述:1. 系统要求与环境搭建:要开发一个安卓应用,首先
2023-04-28
安卓ios的app开发
安卓和iOS是两个不同的操作系统,但开发原理和基本方法是相似的。这里会详细介绍如何开发一款具备基本功能的移动应用程序。这篇文章将分为两部分,第一部分将介绍安卓应用开发,第二部分将介绍iOS应用开发。安卓应用开发:1. 了解Android应用程序架构Andr
2023-04-28
安卓app开发和ios开发的区别是什么
安卓和iOS是两个不同的操作系统,开发app的过程也有很大的不同。以下是安卓开发和iOS开发的区别:1. 开发语言:安卓开发使用Java、Kotlin等语言,而iOS开发则需要使用Swift、Objective-C等语言。2. 开发环境:安卓开发需要使用A
2023-04-28
安卓 app开发软件
安卓 App 开发需要用到的一些软件主要包括以下几种:1. JDK:Java Development Kit,即 Java 开发工具包,是安卓应用程序开发的必备组件。2. Android Studio:Android Studio 是一个完整的集成开发环境
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1