你能以编程方式改变图像的颜色吗?

时间:2017-02-18 19:32:21

标签: java android

我有一张白色图片,在应用程序中我需要以多种不同的颜色显示该图像。

有没有办法以编程方式更改白色图像的颜色,以便我不需要为每种颜色分别设置图像?

现在我有了这个:

button.setBackgroundResource(getResources().getIdentifier("image_white", "drawable", getPackageName()));

3 个答案:

答案 0 :(得分:4)

是的,很简单。您可以使用“颜色过滤器”以编程方式更改任何图像的颜色。

以下是一个关于如何使用它的简单示例。

ImageView imageView = (ImageView) findViewById(R.id.imageV);
imageView.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

图像的颜色将变为红色。您可以使用您选择的任何颜色,但主要的魔力在于使用PorterDuff的正确模式。如果您对结果不满意,也可以尝试使用PorterDuff.Mode.SRC_ATOP

答案 1 :(得分:0)

如果您使用的是材料设计图标,则可以更改颜色。

android:backgroundTint="@color/yourColor" android:tint="@color/yourColor"

Here you can find material design icons

否则您可以使用自定义xml资源文件来更改背景,但我认为我不能满足您的需求。

答案 2 :(得分:0)

您可以使用:

Drawable myDrawable = ContextCompat.getDrawable(context,R.drawable.drawable_id);
myDrawable.setTint(ContextCompat.getColor(context, R.color.color_id);

抱歉我的英文。 我希望能有所帮助。