Android改变了ImageView / Bitmap的颜色

时间:2012-05-04 13:34:12

标签: android bitmap android-imageview

我需要找到一种方法来改变Android中位图的颜色。我需要根据int值在我的应用程序中平滑地替换/更改椭圆图像的颜色。我需要像myValue=5这样的内容,而不是将图片的颜色更改为RED,如果myValue=322将颜色更改为BLUE。我发现我能做到这一点的唯一方法是使用xml文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" android:padding="10dp">
<!-- you can use any color you want I used here gray color-->
 <solid android:color="#cccccc"/> 
    <corners
     android:bottomRightRadius="10dp"
     android:bottomLeftRadius="10dp"
     android:topLeftRadius="10dp"
     android:topRightRadius="10dp"/>
</shape>

之后myValue正在更改以设置我的ImageView图像资源。但是通过这种方式,我必须创建35个不同的xml文件......我认为这不是一个好主意。

那么谁能提出更好的解决方案呢?

5 个答案:

答案 0 :(得分:21)

这就是我解决这个问题的方法:

  1. 使用ImageView
  2. 声明src="@drawable/button"
  3. 创建一个Drawable并为其设置ColorFilter,然后将其作为src用于您声明的ImageView,如下所示:
  4. &GT;

    Drawable myIcon = getResources().getDrawable( R.drawable.button );
    ColorFilter filter = new LightingColorFilter( Color.BLUE, Color.BLUE );
    myIcon.setColorFilter(filter);
    color.setImageDrawable(myIcon);
    

答案 1 :(得分:16)

此解决方案对我来说效果不佳。在某些图像中,最终颜色是错误的。 我改用这个解决方案:

Drawable myIcon = getResources().getDrawable(R.drawable.your_image); 
myIcon.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP); 
((ImageView)findViewById(R.id.view_to_change)).setImageDrawable(myIcon);

答案 2 :(得分:3)

getResources().getDrawable( R.drawable.button );

现已弃用。也可以这样做:

((ImageView) findViewById(R.id.my_icon))
  .setColorFilter(new LightingColorFilter(Color.BLUE, Color.BLUE));

答案 3 :(得分:1)

你应该这样吗。

Drawable myIcon = getResources().getDrawable( R.drawable.button ); 
ColorFilter filter = new LightingColorFilter( Color.BLACK, Color.BLACK);
myIcon.setColorFilter(filter);

答案 4 :(得分:0)