ユーザーのクリックに基づいてビットマップ画像を 10 度回転させたい。多数のスタックオーバーフローとグーグルの回答に続いて、マトリックスローテーションのさまざまな組み合わせを試しました。
ただし、画像は実際には期待どおりに回転せず、キャンバスの中心を中心とした回転と振動のぎくしゃくしたビューを提供します。テストするために、オブジェクトの draw メソッドが呼び出されるたびに (クリックではなく) 回転角度を 10 度ずつ増やしています。画像は対称的な円 [64x64 の囲み長方形] であり、ホイールのように画面の中心で回転することを期待していますが、回転して右下に向かって斜めに移動し、画面の中心に戻って振動します。 .
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);
}