久しぶりにネイティブアプリを開発しておりますが、その中で、ImageViewの回転が意外と面倒だったので、備忘録としてまとめ。
経緯としては、下の画面のようなじゃんけんアプリを作っている際、相手の手を回転させたくて方法を調べました。
些細なことなんですけど、じゃんけんは相手の手が自分の手とは逆なのが普通なので、こうしたほうがよりそれらしくなるんですよね。
画像の回転や縮小・拡大には Matrix を利用します。
が、基本的に画像処理は重い処理なので、あまり多用しないように気を付けてください。
なお、今回参考にさせていただいた記事はこちら。
[Android] Matrixで画像を回転、フリップ、縮小させる
https://akira-watson.com/android/matrix.html
コードは下記のとおりです。
onCreate() 内に記述してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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の画像を回転する方法でした。