簡體   English   中英

Android 改變 ImageView / Bitmap 的顏色

[英]Android change color of ImageView / Bitmap

我需要找到一種方法來更改 Android 中 bitmap 的顏色。我需要根據int值在我的應用程序中順利地替換/更改橢圓圖像的 colors。 我需要類似 if 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 文件......我認為這不是一個好主意。

那么有人可以建議更好的解決方案嗎?

這就是我解決這個問題的方法:

  1. src="@drawable/button"聲明一個ImageView
  2. 創建一個Drawable並將ColorFilter設置為它,然后將它作為src用於您聲明的ImageView如下所示:

>

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

這個解決方案對我來說效果不佳。 在某些圖像中,最終顏色是錯誤的。 我改用這個解決方案:

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);
getResources().getDrawable( R.drawable.button );

現已棄用。 也可以這樣做:

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

你應該這樣嗎?

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

嘗試這個:

private final ImageView uiIV_statusIcon;
uiIV_statusIcon = anyView.findViewById(R.id.iv_status);
uiIV_statusIcon.setImageResource(R.drawable.ic_twotone_error_24);

在活動中:

ImageViewCompat.setImageTintList(uiIV_statusIcon, ColorStateList.valueOf(getColor(R.color.md_red_400)));

在片段中

ImageViewCompat.setImageTintList(uiIV_statusIcon, ColorStateList.valueOf(getContext().getColor(R.color.md_red_400)));

在具有預分配變量 _context 的 Recyclerviewadapter 中:

ImageViewCompat.setImageTintList(uiIV_statusIcon, ColorStateList.valueOf(_context.getColor(R.color.md_red_400)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM