2011年5月5日木曜日

タッチイベントを使って、画像を回転させる

Androidの画像を回転させる方法には、RotateAnimationクラスを使用する方法や、canvasクラスを使用する方法などがあるが、今回のタッチイベントを使って画像を回転させるのは、canvasクラスのrotateメソッドを使用して回転させる。


タッチイベントのMotionEvent.ACTION_MOVEで、回転させる時の角度を計算する。
こんな感じ
double rotate

touchX=event.getX();
touchY=event.getY();

rotate+=Math.atan2(touchY-getHeight/2,touchX-getWidth()/2);

そして、このrotateをcanvasクラスで呼び出したrotateメソッドの引数にて使用する。

canvas.rotate((int)rotate,getWidth()/2,getHeight()/2);

この、rotateメソッドの引数は
引数(角度,回転軸のX、回転軸のY)

画像の回転で注意しなくてはいけないのは、画像が回転しているのでは無く、canvasそのものが回転している、という事で、javaの時のGraphics2Dの時と同じ。

なので、画像の中心で回転しているように見せるには、rotateメソッドの引数の回転軸XとYそれぞれ
画面の幅と高さをそれぞれ1/2したものを入れている。



その他のタッチイベント関連

0 件のコメント:

コメントを投稿