2

私はこのコードを試しています

https://stackoverflow.com/a/14297097/1907593

正常に動作していますが、ACTION_UP では何も起こりません。ACTION_UP で画像を初期ビュー (回転されていない) にリセットしたいと思います。

4

2 に答える 2

1

このコードで解決しました

    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 コード) に戻ることです。

于 2013-01-26T16:40:03.460 に答える
1

これを実行に移します:

case MotionEvent.ACTION_UP : {
            mPrevAngle = mCurrAngle = 0;
            animate(mPrevAngle, mCurrAngle,0);
            break;
        }
于 2013-01-24T17:30:56.493 に答える