13

我有两种 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" />
4

2 回答 2

21

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

  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 可以识别夜间变体目录并相应地翻转。非常好 :)

于 2020-11-20T05:23:57.480 回答
12

您可以使用以下步骤:

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


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


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


4)。选择文件并单击OK
在此处输入图像描述


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


6)。单击Add another qualifier,选择Night Mode,Light mode 为Day Time ,Dark Mode 为Night Time

您可以在此处阅读更多关于 Qualifiers 的信息。
在此处输入图像描述


7)。单击下一步,然后单击导入,您就完成了。

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

于 2021-05-07T12:59:03.620 回答