2. Februar 2013

Android: Bild in ImageView drehen

Um in einer Android-App ein Bild, das durch eine ImageView-Komponente dargestellt wird, um einen beliebigen Winkel zu drehen, bietet sich die folgende Lösung an, die auf der Verwendung einer Transformations-Matrix (die Klasse android.graphics.Matrix der Android-API) basiert.
 ImageView imageView = (ImageView) findViewById(R.id.imageView);  
 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);  
   
 Matrix matrix = new Matrix();  
 matrix.postRotate(30.0f);  
   
 Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);  
   
 imageView.setImageBitmap(rotatedBitmap);  
Zunächst wird die Instanz der entsprechenden ImageView-Komponente, die in diesem Fall per XML in einem Layout-File definiert wurde, über ihre ID angesprochen. Anschließend wird eine neue Bitmap (eine Instanz der Klasse android.graphics.Bitmap), die ein bestimmtes Bild beinhaltet erstellt. Dann wird die Rotationsmatrix instanziiert und der Drehwinkel, in diesem Fall 30°, über die Methode postRotate(float degree)gesetzt. Über die statische Methode createBitmap(..), die unter anderem eine solche Matrix als Parameter entgegen nimmt, lässt sich eine zweite Bitmap-Instanz erstellen, die das, mithilfe der Matrix gedrehte, Bild enthält. Dieses muss nun nur noch an die zuvor instanziierte ImageView übergeben werden.

Keine Kommentare:

Kommentar veröffentlichen