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

एंड्रॉइड 2.2 (एमुलेटर) और 2.3 (एन 1) सेटकॉलरफ़िल्टर() पर काम नहीं कर रहा है। यह 2.1 पर क्यों काम नहीं करता है (एम्यूलेटर पर परीक्षण)? एक और एंड्रॉइड बग?Drawable.setColorFilter() एंड्रॉइड 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

संबंधित मुद्दे