我正在做这种类型的项目,在我的项目中更改动态图像颜色。
我有一个黑色的彩色图像,当用户点击这个图像时,动态变绿图像颜色。
谷歌搜索和其他文件,但我没有解决我的问题。
请帮助我,是否有任何方法或文件可以解决我的问题,
答案 0 :(得分:50)
以下是我如何执行此操作:它从资源xml文件中提取颜色。
<resources>
<color name="new_color">#FFAAAAAA</color>
</resources>
在您的活动.java文件中:
import android.graphics.PorterDuff.Mode;
Resources res = context.getResources();
final ImageView image = (ImageView) findViewById(R.id.imageId);
final int newColor = res.getColor(R.color.new_color);
image.setColorFilter(newColor, Mode.SRC_ATOP);
要清除它,请致电:
image.setColorFilter(null);
答案 1 :(得分:10)
将图片/图片按钮的 android:tint 属性设置为您需要的颜色。
android:tint="@android:color/black"
您可以选择设置 android:tintMode 属性。
答案 2 :(得分:9)
imageView.setImageResource(R.drawable.ic_person_black_48dp);
imageView.setColorFilter(imageView.getContext().getResources().getColor(R.color.desired_color), PorterDuff.Mode.SRC_ATOP);
答案 3 :(得分:8)
在可绘制文件夹中创建资源,例如
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:src="@drawable/rect"
android:tint="@color/red"/>
</item>
</layer-list>
android:tint="@color/red"
做到了。
答案 4 :(得分:1)
在XML中使用src而不是ImageView中的背景标记。 在java代码中 -
import android.graphics.PorterDuff.Mode;
final Context context=this;
home1=(ImageView) findViewById(R.id.home1);
Resources res = context1.getResources();
final int newColor = res.getColor(android.R.color.black);
home1.setColorFilter(newColor, Mode.SRC_ATOP);
答案 5 :(得分:0)
在绘制正方形之前,将它放在OnDraw中。
if (userclicked){
paint.setColor(Color.GREEN);
} else {
paint.setColor(Color.BLACK);
}
当然,如果您使用canvas.drawRect(x0,y0,x1,y1,paint)绘制它,如果您正在绘制这样的简单形状,那么就是这样。