Wie dreht man eine bitmap in Android über Bilder center reibungslos und ohne oszillierende Bewegung

Ich möchten drehen Sie ein bitmap-Bild basierend auf Benutzer, klicken Sie auf um 10 Grad. Nach zahlreichen stackoverflow und google Antworten, ich habe versucht, verschiedene Kombinationen von Matrix-rotation.

Jedoch das Bild nicht wirklich drehen, wie erwartet und gibt einen nervösen Blick auf rotation + Schwingung über die Leinwand-center. Zum testen bin ich zunehmenden Drehwinkel von 10 ° (statt Klicks) jedes mal, wenn Objekt die draw-Methode aufgerufen wird. Das Bild ist ein symmetrischer Kreis [64x64 umschließenden Rechteck] und ich erwarte, dass es zu drehen in der Mitte des Bildschirms über die eigene Mitte, wie ein Rad, aber es dreht sich und bewegt sich Diagonal nach rechts-unten und bewegt sich zurück bis zu der Mitte des Bildschirms in eine Oszillation.

 public void draw(Canvas canvas) {
    Matrix matrix = new Matrix();

    rotation += 10;
    float px = this.viewWidth/2;
    float py = this.viewHeight/2;
    matrix.setRotate(rotation, bitmap.getWidth()/2, bitmap.getHeight()/2);
    Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, getImgWidth(), getImgHeight(), matrix, true);
    canvas.drawBitmap(newbmp, px - (getImgWidth()/2), py - (getImgHeight()/2), null);

 }
InformationsquelleAutor Anshul | 2012-11-15
Schreibe einen Kommentar