2011-03-31 8 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

関連する問題