2011-03-31 12 views
5
Drawable d = new BitmapDrawable(BitmapFactory.decodeResource(
    getResources(), R.drawable.ic_watch)); 
d.setColorFilter(new LightingColorFilter(color, lightenColor)); 
imageView.setImageDrawable(d); 

Su Android 2.2 (emulatore) e 2.3 (N1) setColorFilter() funziona correttamente. Perché non funziona su 2.1 (testato su emulatore)? Un altro bug di Android?Drawable.setColorFilter() non funziona su Android 2.1

risposta

9

È necessario rendere mobile il proprio 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); 

È possibile visualizzare questo problema a saltar fuori nel corso here, anche.

+0

Grazie, ci proverò! Se non funzionerà ti farò sapere. – fhucho

Problemi correlati