41

我正在做这种类型的项目,在我的项目中动态更改图像颜色

我有一个黑色形状的彩色图像,当用户单击此图像时,图像颜色会动态变为绿色。

在此处输入图像描述

谷歌搜索和其他文件如下,但我没有解决我的问题。

请帮助我,是否有任何方法或文件可以解决我的问题,

4

6 回答 6

57

我是这样做的:它从资源 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);
于 2013-01-08T05:08:32.647 回答
25

将图像/图像按钮的android:tint属性设置为您需要的颜色。

android:tint="@android:color/black"

您可以选择设置android:tintMode属性。

于 2017-09-26T18:03:45.713 回答
15
imageView.setImageResource(R.drawable.ic_person_black_48dp);

imageView.setColorFilter(imageView.getContext().getResources().getColor(R.color.desired_color), PorterDuff.Mode.SRC_ATOP);
于 2015-12-12T07:23:14.777 回答
11

在可绘制文件夹中创建资源,例如

<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"可以。

于 2015-12-15T15:08:34.560 回答
3

在 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);
于 2018-02-07T12:56:13.840 回答
0

把它放在你的 OnDraw 中,就在你画你的正方形之前。

if (userclicked){
paint.setColor(Color.GREEN);
} else {
paint.setColor(Color.BLACK);
}

当然,如果您使用 canvas.drawRect(x0,y0,x1,y1,paint) 绘制它,那么如果您绘制这样的简单形状,您就会这样做。

于 2013-01-08T04:51:35.483 回答