Chcę obrócić obraz bitmapowy na podstawie kliknięcia użytkownika o 10 stopni. Po licznych odpowiedziach na stackoverflow i google, wypróbowałem różne kombinacje rotacji macierzy.Jak obracać bitmapę w Androidzie o centrum obrazów płynnie bez ruchu oscylacyjnego
Jednak obraz nie obraca się zgodnie z oczekiwaniami i daje niezadowalający widok obrotu + oscylacji wokół środka płótna. Aby przetestować, zwiększam kąt obrotu o 10 stopni (zamiast kliknięć) za każdym razem, gdy wywoływana jest metoda rysowania obiektu. Obraz jest symetrycznym okręgiem [64x64 obejmującym prostokąt] i spodziewam się, że obróci się w centrum ekranu wokół swojego centrum, jak koło, ale obraca się i porusza się po przekątnej w prawo iw dół, i przesuwa się do środka ekranu w oscylacyjny sposób .
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);
}
Wielkie dzięki !. Działa to z przeniesieniem macierzy z metody "rysowania" i zapewnieniem, że macierz nie jest resetowana [daje płynny efekt rotacji]. Użyto także 'matrix.setRotate (rotation, bitmap.getWidth()/2, bitmap.getHeight()/2);' zamiast dwóch pierwszych * metod. – Anshul
Dzięki za tę odpowiedź. Oszczędza mi to dzień. – Siddharth
Jaki jest ten widok tutaj? –