2012-04-02 8 views
66

मेरे पास निम्न कोड है जो एक निश्चित मात्रा में डिग्री के द्वारा खींचने योग्य घुमाएगा।बिटमैप ड्रायरेबल विकल्प

public Drawable rotateDrawable(float angle, Context context) 
    { 
     Bitmap arrowBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.generic2rb); 

     // Create blank bitmap of equal size 
     Bitmap canvasBitmap = arrowBitmap.copy(Bitmap.Config.ARGB_8888, true); 
     canvasBitmap.eraseColor(0x00000000); 

     // Create canvas 
     Canvas canvas = new Canvas(canvasBitmap); 

     // Create rotation matrix 
     Matrix rotateMatrix = new Matrix(); 
     rotateMatrix.setRotate(angle, canvas.getWidth()/2, canvas.getHeight()/2); 

     //Draw bitmap onto canvas using matrix 
     canvas.drawBitmap(arrowBitmap, rotateMatrix, null); 

     return new BitmapDrawable(canvasBitmap); 
    } 

नया SDK का कहना है कि

BitmapDrawable(canvasBitmap); 

मान्य नहीं है। कोई विकल्प बिल्कुल?

http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html

+1

साथ क्या गलत 'नए BitmapDrawable (context.getResources(), canvasBitmap);'? –

उत्तर

151

इस बजाय कार्य करें:

return new BitmapDrawable(context.getResources(), canvasBitmap); 
+0

ठीक है धन्यवाद, यह काम करता प्रतीत होता है। मैं वहां पर विचलन के बारे में चिंतित था! ऐसा लगता है कि आइकन बड़ा हो गया है लेकिन मैं इसे और देख लूंगा! –

+7

@LeeArmstrong यह बड़ा दिखता है क्योंकि यह आपकी स्क्रीन की घनत्व में छवि को समायोजित करने के लिए संसाधन ऑब्जेक्ट का उपयोग कर रहा है। अक्सर एक विधि को तोड़ने का मतलब है कि यह चीजों को करने का सही तरीका नहीं है, लेकिन इसे अक्सर पीछे की ओर संगतता रखने के लिए लागू किया जाता है। हालांकि, Google हमेशा एपीआई अनुकूल नहीं लगता है, इसलिए अगर वे भविष्य में पुराने कन्स्ट्रक्टर को तोड़ देते हैं तो मुझे आश्चर्य नहीं होगा। – onit

+0

मुझे टूल्स क्लास की स्थिर विधि में नया बिटमैप ड्रायबल बनाना होगा। मेरे पास संदर्भ तक पहुंच नहीं है। मैं इस मामले में इस विधि का उपयोग कैसे कर सकता हूं? – Marek

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