开发者

Drawable.setColorFilter() not working on Android 2.1

开发者 https://www.devze.com 2023-02-20 19:51 出处:网络
Drawable 开发者_如何学编程d = new BitmapDrawable(BitmapFactory.decodeResource( getResources(), R.drawable.ic_watch));
Drawable 开发者_如何学编程d = new BitmapDrawable(BitmapFactory.decodeResource(
    getResources(), R.drawable.ic_watch));
d.setColorFilter(new LightingColorFilter(color, lightenColor));
imageView.setImageDrawable(d);

On Android 2.2 (emulator) and 2.3 (N1) setColorFilter() works fine. Why doesn't it work on 2.1 (tested on emulator)? Another Android bug?


You need to make your Bitmap mutable.

// 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);

You can see this problem cropping up over here, too.

0

精彩评论

暂无评论...
验证码 换一张
取 消