如何在android中动态更改图像颜色?

Hem*_*tvc 32 android

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

我有一个黑色的彩色图像,当用户点击这个图像时动态变绿图像颜色.

在此输入图像描述

谷歌搜索和其他文件遵循,但我没有解决我的问题.

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

Chu*_*k D 52

这是我如何做到这一点:它从资源xml文件中提取颜色.

<resources>
<color name="new_color">#FFAAAAAA</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

在您的活动.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);
Run Code Online (Sandbox Code Playgroud)

要清除它,请致电:

image.setColorFilter(null);
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用透明的PNG,这个答案是有效的 (3认同)

Bor*_*rzh 16

将image/image按钮的android:tint属性设置为您需要的颜色.

android:tint="@android:color/black"
Run Code Online (Sandbox Code Playgroud)

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


Ank*_*man 11

imageView.setImageResource(R.drawable.ic_person_black_48dp);

imageView.setColorFilter(imageView.getContext().getResources().getColor(R.color.desired_color), PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)


小智 10

在drawable文件夹中创建资源

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap
            android:src="@drawable/rect"
            android:tint="@color/red"/>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

android:tint="@color/red" 可以.


Jak*_*ake 0

在绘制正方形之前,将其放入 OnDraw 中。

if (userclicked){
paint.setColor(Color.GREEN);
} else {
paint.setColor(Color.BLACK);
}
Run Code Online (Sandbox Code Playgroud)

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