我有一张白色图片,在应用程序中我需要以多种不同的颜色显示该图像。
有没有办法以编程方式更改白色图像的颜色,以便我不需要为每种颜色分别设置图像?
现在我有了这个:
button.setBackgroundResource(getResources().getIdentifier("image_white", "drawable", getPackageName()));
答案 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);
抱歉我的英文。 我希望能有所帮助。