2012-04-02 9 views
66

Ich habe den folgenden Code, der ein Zeichen um einen festgelegten Grad Grad drehen wird.BitmapDrawable veraltete Alternative

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

Das neue SDK sagt, dass die

BitmapDrawable(canvasBitmap); 

veraltet. Irgendwelche Alternativen?

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

+1

Was stimmt nicht mit 'neuen BitmapDrawable (context.getResources(), canvasBitmap);'? –

Antwort

151

diese stattdessen tun:

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

OK danke, das scheint zu funktionieren. Ich war besorgt über die Missbilligung dort! Es scheint die Ikone größer zu machen, aber ich werde weiter darauf eingehen! –

+7

@LeeArmstrong Es sieht größer aus, da es das Ressourcenobjekt verwendet, um das Bild an die Bildschirmdichte anzupassen. Eine Methode zu verwerfen bedeutet oft, dass sie nicht mehr der richtige Weg ist, aber sie wird oft implementiert, um die Abwärtskompatibilität zu gewährleisten. Allerdings scheint Google nicht immer API-freundlich zu sein, so dass es mich nicht überraschen würde, wenn sie den alten Konstruktor in der Zukunft brechen würden. – onit

+0

Ich muss neue BitmapDrawable in der statischen Methode der Klasse Tools erstellen. Ich habe keinen Zugriff auf den Kontext. Wie könnte ich diese Methode in diesem Fall verwenden? – Marek

Verwandte Themen