返回顶部
首页 > 资讯 > 精选 >Android怎么快速适配暗黑模式
  • 594
分享到

Android怎么快速适配暗黑模式

2023-06-20 21:06:24 594人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关Android怎么快速适配暗黑模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。直接上代码public class DarkModeUtils {

这篇文章将为大家详细讲解有关Android怎么快速适配暗黑模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

直接上代码

public class DarkModeUtils {    public static final String KEY_CURRENT_MODEL = "night_mode_state_sp";    private static int getNightModel(Context context) {        SharedPreferences sp = context.getSharedPreferences(KEY_CURRENT_MODEL, Context.MODE_PRIVATE);        return sp.getInt(KEY_CURRENT_MODEL, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);    }    public static void setNightModel(Context context, int nightMode) {        SharedPreferences sp = context.getSharedPreferences(KEY_CURRENT_MODEL, Context.MODE_PRIVATE);        sp.edit().putInt(KEY_CURRENT_MODEL, nightMode).apply();    }        public static void init(Application application) {        int nightMode = getNightModel(application);        AppCompatDelegate.setDefaultNightMode(nightMode);    }        public static void applyNightMode(Context context) {        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);        setNightModel(context, AppCompatDelegate.MODE_NIGHT_YES);    }        public static void applyDayMode(Context context) {        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);        setNightModel(context, AppCompatDelegate.MODE_NIGHT_NO);    }        public static void applySystemMode(Context context) {        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);        setNightModel(context, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);    }        public static boolean isDarkMode(Context context) {        int nightMode = getNightModel(context);        if (nightMode == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) {            int applicationUiMode = context.getResources().getConfiguration().uiMode;            int systemMode = applicationUiMode & Configuration.UI_MODE_NIGHT_MASK;            return systemMode == Configuration.UI_MODE_NIGHT_YES;        } else {            return nightMode == AppCompatDelegate.MODE_NIGHT_YES;        }    }}

使用流程

很明显这是切换暗黑模式的方法,在调用前必选先适配App的暗黑样式。

如何适配

  1. 颜色资源
    新建values-night文件夹,将页面中使用的色值都替换成暗黑模式下的色值。

  2. 图片资源
    新建mipmap-night/drawable-night文件夹,将页面中使用的图片和样式资源都替换成暗黑模式下的对应资源。

  3. 状态栏
    通过上方代码中最后一个方法isDarkMode判断显示什么颜色的状态栏。最好在BaseActivity中操作,否则Activity很多的话很麻烦。

  4. 调用
    调用上方的方法切换App的暗黑模式。需要注意的点如下:

需要注意

androidx上直接调用即可。support上使用并且在Activity中切换暗黑模式,需要动态调用一下activity.recreate()方法。具体原因看下面源码

androidx版本:

    public static void setDefaultNightMode(@NightMode int mode) {        switch (mode) {            case MODE_NIGHT_NO:            case MODE_NIGHT_YES:            case MODE_NIGHT_FOLLOW_SYSTEM:            case MODE_NIGHT_AUTO_TIME:            case MODE_NIGHT_AUTO_BATTERY:                if (sDefaultNightMode != mode) {                    sDefaultNightMode = mode;                    applyDayNightToActiveDelegates();                }                break;            default:                Log.d(TAG, "setDefaultNightMode() called with an unknown mode");                break;        }    }

support版本:

public static void setDefaultNightMode(int mode) {        switch(mode) {        case -1:        case 0:        case 1:        case 2:            sDefaultNightMode = mode;            break;        default:            Log.d("AppCompatDelegate", "setDefaultNightMode() called with an unknown mode");        }    }

对比后可以发现androidx切换暗黑模式后,自己主动调用了apply方法,使Activity重建。而support上没有,仅仅是赋值而已。所以support版本上使用需要自己调用activity.recreate()方法。

关于“Android怎么快速适配暗黑模式”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Android怎么快速适配暗黑模式

本文链接: https://lsjlt.com/news/300200.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android怎么快速适配暗黑模式
    这篇文章将为大家详细讲解有关Android怎么快速适配暗黑模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。直接上代码public class DarkModeUtils {...
    99+
    2023-06-20
  • Android如何快速适配暗黑模式详解
    直接上代码 public class DarkModeUtils { public static final String KEY_CURRENT_MODEL = "n...
    99+
    2024-04-02
  • 浅谈iOS开发如何适配暗黑模式(Dark Mode)
    暗黑模式 原理 将同一个资源,创建出两种模式的样式。系统根据当前选择的样式,自动获取该样式的资源 每次系统更新样式时,应用会调用当前所有存在的元素调用对应的一些重新方...
    99+
    2022-05-31
    iOS 暗黑模式
  • Win10系统怎么切换黑暗模式
    今天小编给大家分享一下Win10系统怎么切换黑暗模式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。win10系统切换黑暗模式...
    99+
    2023-07-01
  • android深色模式适配怎么实现
    要实现Android深色模式适配,可以按照以下步骤进行:1. 在AndroidManifest.xml文件中设置主题样式为DayNi...
    99+
    2023-09-08
    android
  • Android设计模式之适配器模式怎么使用
    适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的类能够一起工作,通过创建一个适配器类...
    99+
    2023-08-14
    Android
  • 基于vue3和element-plus的暗黑模式怎么实现
    本篇内容介绍了“基于vue3和element-plus的暗黑模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、基本使用因为是通过...
    99+
    2023-07-04
  • Android深色模式适配适配过程详解
    目录Android 深色模式适配深色主题背景在应用中支持深色主题背景主题背景和样式Force Dark在视图上停用 Force DarkAndroid 10以上配置变更 Andro...
    99+
    2023-05-14
    Android深色模式 Android暗色模式 Android夜间模式
  • Android设计模式之适配器(Adapter)模式
    本文实例为大家分享了Android适配器模式源码,供大家参考,具体内容如下 1. 模式介绍 1.1模式的定义:   适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而...
    99+
    2022-06-06
    adapter Android
  • Android深色模式适配的方法是什么
    本篇内容主要讲解“Android深色模式适配的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android深色模式适配的方法是什么”吧!Android 深色模式适配深色主题背景Andr...
    99+
    2023-07-05
  • Adapter适配器模式怎么应用
    这篇文章主要讲解了“Adapter适配器模式怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Adapter适配器模式怎么应用”吧! Adapter(...
    99+
    2024-04-02
  • Java适配器模式怎么掌握
    今天小编给大家分享一下Java适配器模式怎么掌握的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、什么是适配器模式?其实适配...
    99+
    2023-06-29
  • java适配器模式怎么实现
    适配器模式是一种结构型设计模式,用于将一个类的接口转换为另一个接口,以便兼容不同的类或系统。在Java中,适配器模式可以通过以下步骤...
    99+
    2023-10-23
    java
  • PHP适配器模式怎么应用
    今天小编给大家分享一下PHP适配器模式怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PHP 适配器模式讲解和代码示例...
    99+
    2023-07-05
  • Win11夜间模式怎么定时? Win11在指定时间内启动暗黑模式的技巧
    在夜晚使用电脑时,如果周边的环境光线暗,屏幕又是很亮的话,眼睛会很难受。此时我们可以启用夜间模式,但每次都在白天晚上进行切换的话也是很麻烦,我们可以在Windows11系统下设置指定时间自动打开夜间模式,来看看如何操作吧...
    99+
    2023-06-09
    Win11 夜间模式 暗黑模式 定时
  • HTML5怎么使用可选样式表为网站或应用添加黑暗模式
    这篇文章给大家分享的是有关HTML5怎么使用可选样式表为网站或应用添加黑暗模式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。为你的站点添加黑暗模式黑暗模式 已经应用在了许多流行的网站和应用程序中,诸如 Twitt...
    99+
    2023-06-09
  • Java设计模式的适配器模式怎么实现
    这篇文章主要介绍“Java设计模式的适配器模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式的适配器模式怎么实现”文章能帮助大家解决问题。什么是适配器模式适配器模式(Adap...
    99+
    2023-06-30
  • 怎么在Windows11 PC上启用暗模式
    这篇文章主要介绍“怎么在Windows11 PC上启用暗模式”,在日常操作中,相信很多人在怎么在Windows11 PC上启用暗模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2023-04-19
    windows11
  • Java中怎么实现适配器模式
    本篇文章为大家展示了Java中怎么实现适配器模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。类适配模式在地球时代,所有坐骑都是只能跑,不能飞的,而现在很多坐骑在地球都可以飞了。假设,地球时代的坐骑...
    99+
    2023-06-17
  • Android 白天黑夜模式切换适配及引起的Activity销毁重启解决
    目录 一、白夜模式切换,Activity销毁重启解决: 二、 暗黑模式适配  1. 添加依赖:   2. 复制下面工具类方法直接使用即可: 3.资源适配:  4. 适配回调: 5.切换白夜模式注意事项: 一、白夜模式切换,Activi...
    99+
    2023-09-25
    android java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作