【Android】画像の回転表示について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ムゲン

【Android】画像の回転表示について

#1

投稿記事 by ムゲン » 13年前

はじめまして、ムゲンと申します。
早速質問に入らせていただきます。
端末の傾きによって缶がころころと転がるプログラムを組もうと思い、
Androidの館のイライラ棒のプログラムを参考に、ボールの描画部分で画像を使えるようにして、
以下のようなコードで缶の回転アニメーションを実現させようとしました。

コード:

		Matrix matrix = new Matrix();
		Resources res = context.getResources();
		Bitmap can = BitmapFactory.decodeResource(res, R.drawable.mark);

		matrix.postRotate(Degree);

		// 回転させた画像を生成する
		Bitmap can2 = Bitmap.createBitmap(can, 0, 0, 178, 178, matrix, true);
		c.drawBitmap(can2, 300, 450, _paint);
画像は100*100ピクセルのものを使用しています。
Degreeの値を増やすと確かに画像が回転してくれるのですが、
回転に加えて画像が左上から右下に往復するという無駄な動きをしてしまいます。
canという画像が描かれている紙を傾けてcan2という大きな紙に収まるように貼り付けているので、
0度、90度、180度、270度で一番左上に、45度、135度、225度、315度で一番右下にまで移動してしまうということは、
実機の挙動を見てなんとなく理解したのですが、
数学があまり得意でないため、c.drawBitmapのX座標、Y座標をどのように補正したら良いのか見当が付きません。
画像が中心を軸に回っているように見せる補正方法、もしくは他に良い方法がありましたら、
ご指導いただけますでしょうか。
よろしくお願いします。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 【Android】画像の回転表示について

#2

投稿記事 by ISLe » 13年前

回転するたびにビットマップを作成し直すとガベージコレクションによる速度低下が発生します。

androidアプリで動作が重い
こちらのスレにある、ビットマップを再作成せずに、ビットマップの一部を回転して描画するコードが参考になると思います。

ムゲン

Re: 【Android】画像の回転表示について

#3

投稿記事 by ムゲン » 13年前

ISLeさんのコードを参考に、自分のプログラムに組み込んだところ、
綺麗に缶の画像がクルクル回るようになりました。
確かに毎回bmp作成を行わないことで描画も安定し、
最初考えていた以上の形で問題が解決しました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る