【Android】画像の回転表示について
Posted: 2013年4月07日(日) 08:00
はじめまして、ムゲンと申します。
早速質問に入らせていただきます。
端末の傾きによって缶がころころと転がるプログラムを組もうと思い、
Androidの館のイライラ棒のプログラムを参考に、ボールの描画部分で画像を使えるようにして、
以下のようなコードで缶の回転アニメーションを実現させようとしました。
画像は100*100ピクセルのものを使用しています。
Degreeの値を増やすと確かに画像が回転してくれるのですが、
回転に加えて画像が左上から右下に往復するという無駄な動きをしてしまいます。
canという画像が描かれている紙を傾けてcan2という大きな紙に収まるように貼り付けているので、
0度、90度、180度、270度で一番左上に、45度、135度、225度、315度で一番右下にまで移動してしまうということは、
実機の挙動を見てなんとなく理解したのですが、
数学があまり得意でないため、c.drawBitmapのX座標、Y座標をどのように補正したら良いのか見当が付きません。
画像が中心を軸に回っているように見せる補正方法、もしくは他に良い方法がありましたら、
ご指導いただけますでしょうか。
よろしくお願いします。
早速質問に入らせていただきます。
端末の傾きによって缶がころころと転がるプログラムを組もうと思い、
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);
Degreeの値を増やすと確かに画像が回転してくれるのですが、
回転に加えて画像が左上から右下に往復するという無駄な動きをしてしまいます。
canという画像が描かれている紙を傾けてcan2という大きな紙に収まるように貼り付けているので、
0度、90度、180度、270度で一番左上に、45度、135度、225度、315度で一番右下にまで移動してしまうということは、
実機の挙動を見てなんとなく理解したのですが、
数学があまり得意でないため、c.drawBitmapのX座標、Y座標をどのように補正したら良いのか見当が付きません。
画像が中心を軸に回っているように見せる補正方法、もしくは他に良い方法がありましたら、
ご指導いただけますでしょうか。
よろしくお願いします。