仅将一种图像颜色更改为另一种颜色

时间:2015-11-08 19:27:26

标签: android colors android-drawable

我有一个像这样的xml矢量:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="16dp"
        android:height="16dp"
        android:viewportWidth="16.0"
        android:viewportHeight="16.0">
    <path
        android:fillColor="#FFFFFF"
        android:pathData="M8,14c-3.3,0 -6,-2.7 -6,-6s2.7,-6 6,-6s6,2.7 6,6S11.3,14 8,14z"/>
    <path
        android:fillColor="#000000"
        android:pathData="M8,4c2.2,0 4,1.8 4,4s-1.8,4 -4,4s-4,-1.8 -4,-4S5.8,4 8,4M8,0C3.6,0 0,3.6 0,8c0,4.4 3.6,8 8,8c4.4,0 8,-3.6 8,-8C16,3.6 12.4,0 8,0L8,0z"/>
</vector>

呈现给此:
enter image description here

请注意,内部部分是白色的,外部是透明的(我们无法在stackoverflow上注意到,因为页面背景为白色)。

我只想将黑色部分的颜色改为其他颜色(例如蓝色),同时保留白色和透明部分。

我尝试使用:

imageView.setColorFilter(newColor, PorterDuff.Mode.SRC_ATOP);

但这会使黑色和白色部分变蓝。

android中有没有办法只改变黑色部分?

1 个答案:

答案 0 :(得分:0)

对于有类似问题的人,这是我最终使用的解决方法:

我删除了矢量的白色部分(所以我有一个黑色的响铃),然后我将其设置为图像资源。
然后我做了一个白色圆圈形状,并将其设置为ImageView的背景。

现在,当我设置滤色器时,它只改变了 foreground 的颜色 - 环。