我需要以编程方式改变形状的颜色...
我正在使用这个
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/app_theme_blue" />
<corners android:radius="8dp" />
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</shape>
我需要更改android:color="@color/app_theme_blue"
的颜色。
请帮帮我。
答案 0 :(得分:2)
是的,你可以。它真的非常容易。
首先,请记住,使用白色图像更容易,以便使用中性源应用颜色(因此,想象在透明背景上有白色轮廓)。
Drawable drw = mContext.getResources().getDrawable(R.id.baseDrawable);
这一行的作用就是从资源中获取Drawable(baseDrawable - 无论你喜欢什么,都可以命名)。
接下来,我们将使用setColorFilter()方法的重载,该方法接受两个参数:我们想要的颜色和混合模式。
请注意,默认情况下Drawable是不可变的,因此我们必须使其变为可变,以便对其应用任何变换。
drw.mutate().setColorFilter(finalColor, PorterDuff.Mode.MULTIPLY);
现在您可以专注于您的软件,而无需对同一资源进行多种变换。
顺便说一下,没有API级别要求,它自API级别1开始起作用。
P.S:
这些是必需的导入:
import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;