如果在 Android 上启用了暗模式,请使用不同的图像

SCK*_*SCK 6 android android-dark-theme

我有两种 PNG 变体,一种是绘制的文本为黑色,另一种为白色。默认情况下,在白色背景上,我使用黑色图像变体,但是当启用系统暗模式时,图像在背景中几乎不可见。

启用暗模式时,如何指示我的应用使用备用图像?

图像在活动的 XML 中设置:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.me.some_app.someActivity">

    <ImageView
        android:id="@+id/Logo"
        android:layout_width="176dp"
        android:layout_height="219dp"
        android:contentDescription="@string/LogoDescription"
        app:layout_constraintBottom_toTopOf="@+id/divider"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/logo_black" />
Run Code Online (Sandbox Code Playgroud)

Him*_*sal 32

您可以使用以下步骤:

1)。从左侧栏转到资源管理器或视图 > 工具窗口 > 资源管理器 在此输入图像描述


2)。选择可绘制选项卡(如果未选择)
在此输入图像描述


3)。单击“+”图标并选择导入 Drawables
在此输入图像描述


4)。选择文件并单击“确定”
在此输入图像描述


5)。将两个文件重命名为相同的名称。在我的例子中, baseline_feedback_20(暂时忽略警告) 在此输入图像描述


6). 单击“添加另一个限定符”,选择“夜间模式”,其中“浅色模式”值为“白天”,“深色模式”值为“夜间”。

您可以在此处阅读有关预选赛的更多信息。
在此输入图像描述


7). 单击“下一步”,然后单击“导入”,即可完成。

您可以照常使用资源@drawable/logo,或者@drawable/baseline_feedback_20在我的情况下,系统将根据所选模式获取文件。


SCK*_*SCK 8

我通过以下过程解决了这个问题:

  1. 在 处创建一个新目录app/src/main/res/drawable-night,模仿 处已经存在的路径app/src/main/res/drawable
  2. 将白色变体图像移动到新drawable-night目录中,将名称从 更改logo_white.pnglogo.png
  3. 将标准drawable目录中的黑色变体图像重命名logo_black.pnglogo.png
  4. ImageView可绘制引用从更新@drawable/logo_black@drawable/logo

看来Android识别出夜间变体目录并相应地翻转。非常好 :)