单矢量资源多个色调

时间:2016-11-25 13:31:17

标签: android android-resources

我想用矢量版本替换项目中的所有.PNG资源(图标)。 为了使其尽可能高效,我想避免由于不同的状态而重复图像(例如"活动"和#34;非活动"相同图标的版本)。

之前我通过为每个版本使用单独的PNG文件来完成这项工作:不透明"活跃",略微透明"无效"。

所以问题是,是否可以创建一些引用单个矢量(最好)图像但是应用不同颜色/色调的XML?或者至少不同的alpha值就足够了。

P.S。我的minSDK版本是19,如果重要的话。

UPDATE_01 : 我想我需要解释一下细节。 矢量资源正在按预期工作(所有准备都是为了compat lib根据需要绘制向量)。

主要问题是在单独的XML中使用一个单独的矢量图标和多个不同颜色/ alpha的引用。并根据需要使用这些XML(在工具栏,按钮,状态等)。

UPDATE_02 : 也许和榜样会更好。

我有一个'#34; home"图标,看起来像这样:

<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矢量可绘制但具有不同的色调,用于&#34;活跃&#34;和&#34;不活跃&#34;例如,在页面适配器的选项卡中说明。

我现在要做的就是复制这个XML并更改它&#34; android:fillColor&#34;值。

在它使用的所有地方对它进行变异(在代码中)是一种方式,但从我的观点来看并不是很好。也许还有另一种方式?像这样(伪):

<image-reference
    android:srcDrawable="@drawable/home_icon"
    android:tint="@color/activeHomeIcon" />

然后使用这个&#34; home_icon_ref.xml&#34;无处不在的地方。

希望这次让我的问题更清楚。

2 个答案:

答案 0 :(得分:0)

您可以在java代码中以编程方式修改,而不是在单独的XML资源中使用。关注this SO post

答案 1 :(得分:0)

不确定是否正是您所需要的(这已经有2年的历史了),但是您可以在android:tint的xml中使用ImageView

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:src="@drawable/vector_drawable"
    android:tint="@android:color/black"
    android:contentDescription="@string/description"
/>

我目前正在使用minSdkVersion 21,但根据this,它似乎可以在早期版本中使用。
您还可以将style<item name="android:tint">@android:color/black</item>一起使用。