【发布时间】:2018-11-07 21:36:51
【问题描述】:
我想用矢量版本替换我项目中的所有 .PNG 资源(图标)。 为了尽可能高效,我想避免由于不同状态(例如同一图标的“活动”和“非活动”版本)而导致图像重复。
以前我通过为每个版本使用单独的 PNG 文件来做到这一点:一个不透明的“活动”和稍微透明的“非活动”。
所以问题是,是否可以创建一些引用单个矢量(最好是)图像但对其应用不同颜色/色调的 XML?或者至少不同的 alpha 值就足够了。
附:如果重要的话,我的 minSDK 版本是 19。
UPDATE_01: 我想我需要更详细地解释一下。 矢量资源按预期工作(所有准备工作都已为 compat lib 根据需要绘制矢量做好了准备)。
主要问题是在单独的 XML 中使用一个单一的矢量图标和多个具有不同颜色/alpha 的引用。并在需要的地方(工具栏、按钮、状态等)使用这些 XML。
UPDATE_02: 也许和例子会更好。
我有一个“主页”图标的矢量可绘制对象,如下所示:
<vector
android:height="24dp"
android:viewportHeight="792.0"
android:viewportWidth="792.0"
android:width="24dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<path
android:fillColor="#FF000000"
android:pathData="..."/>
</vector>
我想要的是使用相同的 XML 矢量drawable,但“活动”和“非活动”状态具有不同的色调,例如,在页面适配器的选项卡中。
我现在要做的是复制这个 XML 并更改它的“android:fillColor”值。
在所有使用它的地方改变它(在代码中)是一种方法,但从我的角度来看不是很好。也许还有另一种方式?像这样的东西(伪):
<image-reference
android:srcDrawable="@drawable/home_icon"
android:tint="@color/activeHomeIcon" />
然后在任何地方都使用这个“home_icon_ref.xml”作为可绘制源。
希望这一次能让我的问题更清楚。
【问题讨论】:
-
DrawableCompat#setTintList -
API static { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); }
-
我想我应该添加更多关于主题的细节。查看我的更新。
-
对不起,尽管您更新了我仍然没有看到您的主要问题...
-
我在我的问题中添加了一个示例。