【Android】ImageViewの画像を180度回転させる方法

久しぶりにネイティブアプリを開発しておりますが、その中で、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の画像を回転する方法でした。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG