Android深色主题背景的实现及主题背景颜色互换

目录

深色主题背景的优势:

如何实现Android的深色主题模式:

控制App内深色模式的自由切换:


深色主题背景的优势:

1.减少耗电量

2.提高深夜中的可视性

Android 10及更高版本中提供深色主题背景。

可以通过以下方法启用深色主题背景:

  • 使用系统设置启用深色主题背景。
  • 在 Pixel 设备上,选择“省电模式”将同时启用深色主题背景。

应用在 Android 10 (API 级别 29) 及更高版本上运行时,推荐的选项有所不同,目的是允许用户替换系统默认设置:

  • 浅色
  • 深色
  • 系统默认

如何实现Android的深色主题模式:

1.创建一个Empty Activity

2. 若没有style.xml,则按照该路径创建了一个res/values/styles.xml:

3. 在style.xml中添加将应用的主题背景设置为继承DayNight主题背景:

<style name="AppTheme" parent="Theme.AppCompat.DayNight">

或使用MaterialComponent 的深色主题背景

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">

4.在main中加入:

<LinearLayout
		      android:layout_width="wrap_content"
		      android:layout_height="wrap_content"
		      android:forceDarkAllowed="true">
</LinearLayout>

5.在主题中加入:

<style name="AppTheme.NoActionBar">
		    <item name="android:forceDarkAllowed">true</item>
</style>

6.最终能达成的效果:

 如要检查当前采用的是哪种主题背景,应用可以运行如下代码:

int currentNightMode = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK;
switch (currentNightMode) {
    case Configuration.UI_MODE_NIGHT_NO:
        break;
    case Configuration.UI_MODE_NIGHT_YES:
        break;
}

控制App内深色模式的自由切换:

AppCompatDelegate里包含这么几种:
MODE_NIGHT_NO: 使用亮色主题,不使用夜间模式
MODE_NIGHT_YES:使用暗色主题,使用夜间模式
MODE_NIGHT_AUTO:根据当前时间自动切换 亮色/暗色主题
MODE_NIGHT_FOLLOW_SYSTEM(默认选项):设置为跟随系统,通常为 MODE_NIGHT_NO

可以使用Android Studio自带的方法setDefaultNightMode():

AppCompatDelegate.setDefaultNightMode()

注意:setDefaultNightMode()对整个系统生效。

另一个方法:

setLocalNightMode()可以对单独页面生效。

但只能由getDelegate().setLocalNightMode()调用。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值