[英]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 文件......我認為這不是一個好主意。
那么有人可以建議更好的解決方案嗎?
這就是我解決這個問題的方法:
src="@drawable/button"
聲明一個ImageView
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);
您可以使用TransitionDrawable來實現此目的 - http://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html
嘗試這個:
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.