2011-03-31 66 views
5
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錯誤?Drawable.setColorFilter()不能在Android 2.1上工作

回答

9

你需要讓你的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以上。

+0

謝謝,我會嘗試的!如果它不起作用,我會讓你知道。 – fhucho 2011-04-12 14:56:42

相關問題