9

実行時に4つのイメージビューを中央に追加するフレームレイアウトがありますが、ユーザーがさまざまなアクションを実行できるメインイメージが含まれていますが、レイアウトビューを回転させると問題に直面します

現在、回転ボタンに触れている私はこれをやっています

public void setRotateListener() {
    mRotateImage.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            float x = event.getX(0);
            float y = event.getY(0);
            float theta = getTheta(x, y);

            switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_POINTER_DOWN:
                theta_old = theta;
                break;
            case MotionEvent.ACTION_MOVE:
                float delta_theta = theta - theta_old;
                theta_old = theta;
                int direction = (delta_theta > 0) ? 1 : -1;
                angle += 3 * direction;

                Log.d("Tag", "rotate angle : " + obj.getHeight());
                obj.setRotation(angle);
                notifyListener(direction);
                break;
            }
            return true;
        }
    });
}

private float getTheta(float x, float y) {
    float sx = x - (obj.getWidth() / 2.0f);
    float sy = y - (obj.getHeight() / 2.0f);

    float length = (float) Math.sqrt(sx * sx + sy * sy);
    float nx = sx / length;
    float ny = sy / length;
    float theta = (float) Math.atan2(ny, nx);

    final float rad2deg = (float) (180.0 / Math.PI);
    float thetaDeg = theta * rad2deg;

    return (thetaDeg < 0) ? thetaDeg + 360.0f : thetaDeg;
}

しかし、私は期待した結果を得ることができません私はすでにこのリンクを参照してい ます https://github.com/rprouse/XkcdClock だけでなく、ジェスチャとアニメーションでも回転しようとしていますが、画面上での私の動きに従って動作していないようですタッチしている間、回転ボタンはビュー全体を時計回りと反時計回りの両方に回転させたい

4

1 に答える 1