I need to find a way to change the color of bitmap in Android. I need to replace/change colors of oval image smoothly in my application depending on int
value. I need something like if myValue=5
than change my image's color to RED
and if myValue=322
change color to BLUE
. The only way which I find I can do this was using xml file which looks like this:
<?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>
and after that when myValue
is changing to set my ImageView
image resource. But in this way I have to create 35 different xml files...which I don't think is a good idea.
So anyone who can suggest better solution to do this?
This is how I solved this issue :
ImageView
with src="@drawable/button"
Drawable
and set ColorFilter
to it and after that use it as src to your declared ImageView
like this : >
Drawable myIcon = getResources().getDrawable( R.drawable.button );
ColorFilter filter = new LightingColorFilter( Color.BLUE, Color.BLUE );
myIcon.setColorFilter(filter);
color.setImageDrawable(myIcon);
This solution doesn't work very well for me. In some images the final color was wrong. I use this solution instead:
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 );
is now deprecated. Can also do it this way:
((ImageView) findViewById(R.id.my_icon))
.setColorFilter(new LightingColorFilter(Color.BLUE, Color.BLUE));
Should you this.
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
Try this:
private final ImageView uiIV_statusIcon;
uiIV_statusIcon = anyView.findViewById(R.id.iv_status);
uiIV_statusIcon.setImageResource(R.drawable.ic_twotone_error_24);
in Activity:
ImageViewCompat.setImageTintList(uiIV_statusIcon, ColorStateList.valueOf(getColor(R.color.md_red_400)));
in a Fragment
ImageViewCompat.setImageTintList(uiIV_statusIcon, ColorStateList.valueOf(getContext().getColor(R.color.md_red_400)));
in a Recyclerviewadapter with preassigned variable _context:
ImageViewCompat.setImageTintList(uiIV_statusIcon, ColorStateList.valueOf(_context.getColor(R.color.md_red_400)));
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.