私はこのコードを試しています
https://stackoverflow.com/a/14297097/1907593
正常に動作していますが、ACTION_UP では何も起こりません。ACTION_UP で画像を初期ビュー (回転されていない) にリセットしたいと思います。
私はこのコードを試しています
https://stackoverflow.com/a/14297097/1907593
正常に動作していますが、ACTION_UP では何も起こりません。ACTION_UP で画像を初期ビュー (回転されていない) にリセットしたいと思います。
このコードで解決しました
private double mCurrAngle = 0;
private double mPrevAngle = 0;
private long durationMillis;
case MotionEvent.ACTION_UP : {
mPrevAngle = Math.toDegrees(Math.atan2(x - xc, yc - y));
mCurrAngle = 0;
durationMillis = 1000;
animate(mPrevAngle, mCurrAngle,durationMillis);
break;
case MotionEvent.ACTION_MOVE: {
mPrevAngle = mCurrAngle;
mCurrAngle = Math.toDegrees(Math.atan2(x - xc, yc - y));
animate(mPrevAngle, mCurrAngle, 0);
if (mCurrAngle>0);{mCurrAngle = mCurrAngle-360;}
break;
ここでの問題は、myCurrAngle が 0 から -360 までの角度の値をとらず、0 から 180 までと -1 から -180 までの値を取ることです。上記のコードで 0 ~ 360 の値に変換しようとしていますが、現在は -180 ~ -360 および -360 ~ -540 の値になっています。私の最終的な目標は、ACTION_MOVE で -240° に達したときに、自動的に 0° (ACTION_UP コード) に戻ることです。
これを実行に移します:
case MotionEvent.ACTION_UP : {
mPrevAngle = mCurrAngle = 0;
animate(mPrevAngle, mCurrAngle,0);
break;
}