安卓9 开发者 夜间模式

夜间模式是一种可以在暗光环境下减轻眼睛压力的显示方式,多见于手机、电脑等设备。随着智能手机的快速发展,越来越多的应用程序支持夜间模式,Android9也不例外。在本文中,我们将介绍Android 9 夜间模式的实现原理和详细介绍。

实现原理

Android 9夜间模式的实现基于两个方面的技术:主题样式和场景识别。

主题样式: Android 9 夜间模式使用主题样式将屏幕的颜色从白色转变为黑色或灰色色。主题样式可以定义为布局的 XML 文件,内容包括字体、颜色、背景等。

场景识别: Android 9 夜间模式需要识别当前的环境,在白天,应用程序应默认显示白色主题,而在晚上或光线较暗的环境下,则应自动切换到黑色或灰色主题。为了实现场景识别,Android 9 加入了“UiModeManager”类,该类提供了 "setNightMode()"、"getNightMode()" 等方法,允许应用程序设置和获取当前 UI 模式。

详细介绍

下面是 Android 9 夜间模式的详细介绍:

1.支持夜间模式的应用程序

Android 9 夜间模式仅支持使用 Theme.AppCompat.DayNight 主题的应用程序。负责夜间效果的 Theme.AppCompat.DayNight 主题是在 AppCompat 库中实现的,同时也实现了自动切换日/夜模式。

2.添加依赖库

如果希望使用 AppCompat 库中的 DayNight 主题,则必须在 build.gradle 中添加以下依赖库:

dependencies {

implementation 'com.android.support:appcompat-v7:28.0.0'

}

3.设置主题

为了在应用程序中启用夜间模式,必须在 AndroidManifest.xml 中设置主题。可以将主题设置为 AppCompat.DayNight,同时指定使用的颜色主题。以下是一个例子:

android:theme="@style/AppTheme.Dark"

4.创建颜色主题

在 res/values 文件夹下创建两个文件夹: values 和 values-night。在 values 中创建 colors.xml 文件,定义日间模式使用的颜色;在 values-night 中创建 colors.xml 文件,定义夜间模式使用的颜色。

例如,以下是 values/colors.xml 文件的内容:

#3F51B5

#303F9F

#FF4081

以下是 values-night/colors.xml 文件的内容:

#1C2331

#0A0F18

#FF4081

在夜间模式下,颜色将从 values-night/colors.xml 文件中读取。

5.启用自动夜间模式切换

为了使应用程序能够自动切换日/夜模式,必须使用 UiModeManager 类中的 setNightMode () 方法。为了提高兼容性,可以使用 AppCompatDelegate 类和 AppCompatDelegate.getDefaultNightMode() 方法进行设置。

例如,以下代码将自动切换日/夜模式:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY);

以上代码将根据设备电池电量自动切换到日/夜模式。

还有一些其他的 AppCompat.MODE_NIGHT_NO、MODE_NIGHT_YES 和 MODE_NIGHT_FOLLOW_SYSTEM 选项,分别表示禁用日/夜模式、每次启动时始终使用夜间模式和随着系统日/夜模式切换。

总结

Android 9 的夜间模式能够在白天和晚上自动切换不同的颜色主题,明显减轻了眼睛的压力。通过 UiModeManager 中的类和 AppCompat 库的支持,在应用程序中也能方便地实现夜间模式。


相关知识:
rust可以开发安卓么
Rust是一种系统级编程语言,它与C和C++有很多相似之处,但又有许多不同之处。Rust旨在提供更高级别的抽象,同时保持与底层硬件直接交互的能力。这使得Rust在一些需要高效率和可靠性的场景下非常有用,例如操作系统和嵌入式设备。虽然Rust本质上是一种系统
2023-05-23
miracast安卓开发
Miracast技术是一种新型的无线屏幕镜像技术,它的原理是通过无线传输将移动设备上的图像或视频传输至显示设备上进行展示。Miracast具有高清无线传输、快速连接、低延迟等特点,许多移动设备都支持这项技术。Miracast的开发主要涉及以下几个方面:1.
2023-05-23
macm1能用于安卓开发么
Mac M1芯片是苹果公司最新推出的自主研发的芯片,其采用的是Arm架构,而不是之前苹果一直使用的x86架构,因此需要特殊的工具和软件适配。对于安卓开发来说,开发环境是必不可少的,其中最常用的开发环境是Android Studio,而且要求操作系统至少是m
2023-05-23
hi交友安卓版开发
Hi交友是一款非常流行的社交软件,主要针对年轻群体,追求简单、美观、实用的产品。Hi交友的用户可通过APP发送聊天信息,分享照片等功能,丰富了用户间的交流体验。对于开发一款Hi交友安卓版的开发者来说,首先需要了解安卓开发的基础知识和开发流程,熟悉常用的开发
2023-05-23
eclipse安卓音乐程序开发
Eclipse是一款广泛应用于Android开发的IDE(Integrated Development Environment)工具。在Eclipse中,可以使用Java编程语言以及Android SDK进行应用程序开发与调试。在本文中我们将介绍如何使用E
2023-05-23
eclipse安卓开发图片一致
在eclipse安卓开发中,图片的一致性非常重要,它可以让我们的应用看起来更加统一和美观。本文将介绍图片一致性的原理以及在eclipse中实现图片一致性的方法。首先,图像的一致性是指在整个应用程序中,使用相同的图标、颜色、设计和字体等,以达到同一界面、同一
2023-05-23
2021安卓开发
随着智能手机日益普及,安卓操作系统的应用也越来越广泛,安卓开发成为了一个非常热门的技术领域。那么,什么是安卓开发?安卓开发的原理又是什么呢?下面就为大家介绍一下。安卓开发指的是开发用于安卓智能手机和平板电脑等移动设备的应用程序。安卓操作系统是一个基于Lin
2023-05-23
杭州安卓app开发收费多少
杭州的安卓APP开发收费因其实际需求和项目复杂度的不同而有很大差异,通常分为固定价格项目和计时项目两种方式。在讨论收费详情之前,让我们先了解一下安卓APP开发的一些基本原理和关键步骤。1. 需求分析:在开发过程开始之前,需要从客户那里收集详细的需求。这些需
2023-04-28
安徽安卓app开发报价
安徽安卓App开发报价及原理详细介绍当您想要在安徽省开发一个安卓App时,可能首先关心的问题是开发成本。在此,我们将深入了解安徽安卓App开发的报价以及一些基本原理和详细介绍。一、安徽安卓App开发报价在安徽省开发安卓App的报价是受多种因素影响的,但通常
2023-04-28
安卓app开发平台游戏
安卓APP开发平台游戏是一种基于Android(安卓)系统的应用程序,它们可以在Android系统的智能手机、平板电脑等设备上运行。安卓APP开发平台游戏开发越来越受到游戏开发者的青睐,因为它具有许多优点,例如易于学习,具有强大的功能和灵活性等。以下是安卓
2023-04-28
可以用汉语开发安卓app的软件
可以使用Java语言和Android开发工具包(Android SDK)来开发安卓应用程序。Android SDK提供了许多开发工具和类库,可以大大简化和加速应用程序开发的过程。同时,Android Studio是一个很好的Android开发IDE,使得开
2023-04-28
做安卓app开发需要钱吗
做安卓App开发在很多情况下是可以不需要额外投入资金的。下面是一些关于安卓开发的基本原理和详细介绍,以帮助你了解其中的成本及可能需要投入的资源。1. 开发环境和工具Android系统是基于Java(现在也支持Kotlin)开发的,你需要先安装Java开发工
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1