久しぶりにネイティブアプリを開発しておりますが、その中で、ImageViewの回転が意外と面倒だったので、備忘録としてまとめ。
経緯としては、下の画面のようなじゃんけんアプリを作っている際、相手の手を回転させたくて方法を調べました。
些細なことなんですけど、じゃんけんは相手の手が自分の手とは逆なのが普通なので、こうしたほうがよりそれらしくなるんですよね。
画像の回転や縮小・拡大には Matrix を利用します。
が、基本的に画像処理は重い処理なので、あまり多用しないように気を付けてください。
なお、今回参考にさせていただいた記事はこちら。
[Android] Matrixで画像を回転、フリップ、縮小させる
https://akira-watson.com/android/matrix.html
コードは下記のとおりです。
onCreate() 内に記述してください。
Image View imageView = findViewById(R.id.[ImageViewのID]); Bitmap bitmap_origin = BitmapFactory.decodeResource(getResources(), [画像パス]); // 画像の横、縦サイズを取得 int imageWidth = bitmap_origin.getWidth(); int imageHeight = bitmap_origin.getHeight(); // Matrix インスタンス生成 Matrix matrix = new Matrix(); // 画像を中心に180度回転 matrix.setRotate(180, imageWidth/2, imageHeight/2); // 180度回転したBitmap画像を生成 Bitmap bitmap_rotate = Bitmap.createBitmap(bitmap_origin, 0, 0, imageWidth, imageHeight, matrix, true); imageView.setImageBitmap(bitmap_rotate);
コードを見てもらえれば分かりますが、CSS のように単純に回転はできず、画像そのものをビットマップに変換してから、回転させて表示するという処理が必要になります。
少々面倒ですが…こうしてコードをまとめておけば、以降はこれをコピー&ペーストするだけで済みますね。
以上、ImageViewの画像を回転する方法でした。