Drawable d = new BitmapDrawable(BitmapFactory.decodeResource(
getResources(), R.drawable.ic_watch));
d.setColorFilter(new LightingColorFilter(color, lightenColor));
imageView.setImageDrawable(d);
在Android 2.2(模拟器)和2.3(N1)上,setColorFilter()可以正常工作。为什么在2.1(在模拟器上测试)上不起作用?另一个Android错误?
最佳答案
您需要使自己的Bitmap
可变。
// make a mutable Bitmap
Bitmap immutableBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_watch);
Bitmap mutableBitmap = immutableBitmap.copy(Bitmap.Config.ARGB_8888, true);
// you have two bitmaps in memory, so clean up the mess a bit
immutableBitmap.recycle(); immutableBitmap=null;
Drawable d = new BitmapDrawable(mutableBitmap);
// mutate it
d.setColorFilter(new LightingColorFilter(color, lightenColor));
imageView.setImageDrawable(d);
您也可以在here上看到这个问题。