美文网首页
深色模式适配参考

深色模式适配参考

作者: LineCutFeng | 来源:发表于2021-01-06 11:02 被阅读0次

    用一句话来说,适配深色模式的唯一的工作就是打开你的app界面,打开系统深色模式,把app图片、资源、颜色等等,在黑色night目录下同样适配一套 深色模式的UI。

    适配深色模式不能依赖于系统的强制反色,因为全局反色是在miui12的系统代码上才有的,在miui11之中的深色模式是没有全局反色功能的,因此App需要手动适配深色模式

    app通过资源id等方式获取资源文件时,如果在深色模式下,app会读取对应-night-目录的资源文件,规律如下:

    普通模式 深色模式
    values values-night
    color color-night
    drawable drawable-night
    drawable-nxdpi drawable-night-nxdpi
    drawable-xhdpi drawable-night-xhdpi
    drawable-xxhdpi drawable-night-xxhdpi
    drawable-xxxhdpi drawable-night-xxxhdpi
    values-nhdpi values-night-nhdpi

    以此类推,文件夹的命名规律就是中间插入: -night-

    切换到深色模式时,资源应用的优先顺序:

    1. 应用提供的-night资源
    2. 应用设置的默认资源(通常是亮色下的资源,也可以是应用主动在深色模式下设置的主题)
    3. 系统的默认深色资源
    4. 系统默认的亮色资源

    只要night文件夹放了对应的资源文件,系统开启深色模式设置开关就会自动读取night文件夹下的图片,night资源不会被系统全局反色,只有没主动适配的视图布局才可能会被全局反色。

    如果App因为night资源数远超20个,由于系统的代码判断App,不会被强制反色。

    小技巧:对于纯色图片或图标,如果不想让UI切两套图片(黑色调和白色调)放到不同的资源文件夹下,如果是xml文件,可以使用着色器,不同的控件需要使用不同的着色器,如下:

    属性 深色模式适配方法
    Botton BottonTint="@color/xxx"
    ImageView tint="@color/xxx"
    background backgroundTint="@color/xxx"
    drawableLeft drawableTint="@color/xxx"

    可以在night目录下放对应的颜色,这样依赖系统读取night资源文件来达到适配深色模式的目的

    MIUI Android Q 深色模式适配指南

    相关文章

      网友评论

          本文标题:深色模式适配参考

          本文链接:https://www.haomeiwen.com/subject/hernoktx.html