【问题标题】:How to Change image color dynamically in android?如何在android中动态更改图像颜色?
【发布时间】:2013-01-08 04:46:58
【问题描述】:

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

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

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

请帮助我,有什么方法或文件可以解决我的问题,

【问题讨论】:

标签: android


【解决方案1】:

我是这样做的:它从资源 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);

【讨论】:

  • 感谢您的回复,我正在尝试代码但没有解决我的问题,此代码更改整个图像颜色而不是图像形状颜色
  • 尝试不同的模式,它将适用于您的示例:developer.android.com/reference/android/graphics/…
  • 我正在尝试不同的模式,这是改变图像颜色而不是图像形状颜色。
  • 是的,也许是覆盖、饱和、屏幕。如果您可以在白色部分使用 alpha 蒙版并在父视图中使用白色背景,那也可以。
  • 尝试这种模式,但我无法更改图像形状颜色。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:
    imageView.setImageResource(R.drawable.ic_person_black_48dp);
    
    imageView.setColorFilter(imageView.getContext().getResources().getColor(R.color.desired_color), PorterDuff.Mode.SRC_ATOP);
    

    【讨论】:

      【解决方案4】:

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

      <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" 做到了。

      【讨论】:

      • 我已经测试过了,它在 api 级别 29 但 19 上工作。
      【解决方案5】:

      在 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);
      

      【讨论】:

        【解决方案6】:

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

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

        当然,如果你是用 canvas.drawRect(x0,y0,x1,y1,paint) 来绘制它,你会像这样绘制一个简单的形状。

        【讨论】:

        • 对不起,这不是我的问题,我有一个黑色形状的图像,并且图像颜色动态变化。
        猜你喜欢
        • 1970-01-01
        • 2014-12-24
        • 2011-08-07
        • 2019-09-28
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 2021-08-11
        • 1970-01-01
        相关资源
        最近更新 更多