Как повернуть вытаскиваемый ObjectAnimator?

Алфавитный рисунок можно сделать так:

if(mAlphaAnimation == null){
        mAlphaAnimation = ObjectAnimator.ofFloat(this, "alpha", 0.0f,1.0f).setDuration(TARGET_ANIM_ALPHA_DURATION);
        mAlphaAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
        mAlphaAnimation.setStartDelay(TARGET_ANIM_ALPHA_DELAY_BASE*power);
        mAlphaAnimation.setRepeatCount(ValueAnimator.INFINITE);
        mAlphaAnimation.setRepeatMode(ValueAnimator.REVERSE);
        mAlphaAnimation.addUpdateListener(this);
 }

Но если я хочу повернуть drawable, как показано ниже, он не работает.

private void createRotateAnim(float fromDegress,float toDegress,int duration){
    if(mRotateAnimation == null){
        mRotateAnimation = ObjectAnimator.ofFloat(this, "rotation",fromDegress,toDegress).setDuration(duration);
        mRotateAnimation.setStartDelay(100);
        mRotateAnimation.setInterpolator(new AccelerateInterpolator());
        mRotateAnimation.addUpdateListener(this);
    }
}

Любой может помочь мне исправить эту проблему, или это любой другой способ создания анимации с возможностью поворота.

Мне жаль моего бедного английского.

Ответы

Ответ 1

Попробуйте эту простую анимацию вращения, применяемую к изображению.

 ImageView imageview = (ImageView)findViewById(R.id.myimage);
 RotateAnimation rotate = new RotateAnimation(180, 360, Animation.RELATIVE_TO_SELF,    
 0.5f,  Animation.RELATIVE_TO_SELF, 0.5f);
  rotate.setDuration(500);
 imageview.startAnimation(rotate);

Этот ответ только ради вопроса, правильно, что область Clickable будет отличаться от текущей позиции View. Пожалуйста, проверьте этот вопрос, чтобы сделать правильную кликовую область. Кнопка не может быть нажата после TranslateAnimation

Ответ 2

Попробуйте вместо ObjectAnimator.

ImageView imageview = (ImageView)findViewById(R.id.image);

ObjectAnimator imageViewObjectAnimator = ObjectAnimator.ofFloat(imageview ,
                    "rotation", 0f, 360f);
            imageViewObjectAnimator.setDuration(1000); // miliseconds
            imageViewObjectAnimator.start();

ИЗМЕНИТЬ Поскольку этот вопрос привлек некоторое внимание, позвольте мне объяснить, почему использовать ObjectAnimator вместо других аниматоров перехода

Дело в использовании ObjectAnimator заключается в том, что он перемещает видимую и интерактивную область элемента, если вы используете другой метод анимации, например, анимацию перехода или некоторые другие аниматоры, и пусть скажет, хотите ли вы переместить Button в левом нижнем углу экрана в верхнем левом углу, он перемещает только видимую область, но не сам Button, область с щелчком по-прежнему будет находиться в предыдущей позиции, в этом случае область с клики будет по-прежнему в левом нижнем углу, а не слева вверху, где вы переместили кнопку.

Если вы сделаете то же самое с ObjectAnimator, как видимая область, так и область с щелчком переместит нужное место.