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

W systemie Android 2.2 (emulator) i 2.3 (N1) setColorFilter() działa poprawnie. Dlaczego nie działa on w wersji 2.1 (testowany na emulatorze)? Kolejny błąd Androida?Drawable.setColorFilter() nie działa na systemie Android 2.1

Odpowiedz

9

Musisz zmienić swoją Bitmap zmienną.

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

Ten problem pojawia się również w przypadku here.

+0

Dzięki, spróbuję! Jeśli to nie zadziała, dam ci znać. – fhucho

Powiązane problemy