Drawable.setColorFilter() 在 Android 2.1 上不起作用
Posted
技术标签:
【中文标题】Drawable.setColorFilter() 在 Android 2.1 上不起作用【英文标题】:Drawable.setColorFilter() not working on Android 2.1 【发布时间】:2011-07-26 20:35:57 【问题描述】: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 错误?
【问题讨论】:
【参考方案1】:您需要使您的 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 上看到这个问题。
【讨论】:
以上是关于Drawable.setColorFilter() 在 Android 2.1 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章