Android RotateAnimation, как выполнить больше вращений? - PullRequest
1 голос
/ 05 сентября 2011

Мне нужно повернуть ImageView по нажатию кнопки. При первом щелчке он должен вращаться вправо, при втором слева и т. Д.

Проблема в том, что когда я пытаюсь во второй раз повернуть "только что повернутое" изображение, вращение начинается с исходной точки, а не с точки "после первого поворота".

Мне нужно повернуть изображение, полученное в результате предыдущего поворота. Ниже я прошёл код.

public class Rotate extends Activity {
    boolean mDirRight = true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rotate);
        final ImageView imageArray = (ImageView) findViewById(R.id.ImageViewArray);
        imageArray.setImageResource(R.drawable.array01);
        imageArray.setAdjustViewBounds(true);
        final Button btnRotate = (Button) findViewById (R.id.ButtonRotate);
        btnRotate.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                doRotation();
            }
        });    
    }

    private void doRotation(){
        final int rotationRight = 30;
        final int rotationLeft = -20;
        final RotateAnimation rAnim;
        int degree;
        if (mDirRight) {
            degree = rotationRight;
            mDirRight = false;
        } else {
            degree = rotationLeft;
            mDirRight = true;
        }
        final ImageView image = (ImageView) findViewById(R.id.ImageViewArray);
        rAnim = new RotateAnimation(0f, degree, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f);
        rAnim.setStartOffset(0);
        rAnim.setDuration(2000);
        rAnim.setFillAfter(true);
        rAnim.setFillEnabled(true);
        image.startAnimation(rAnim);
    }
}

1 Ответ

2 голосов
/ 05 сентября 2011

В этой строке

rAnim = новая анимация RotateAnimation (0f, градус, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f);

изменить 0fдо желаемого начального угла.

...