Как повернуть drawable с помощью ObjectAnimator?
Alphaing drawable хорошо работает так:
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);
}
}
любой может помочь мне исправить эту проблему ,или это любой другой способ создания анимации вращения.
мне жаль мой бедный английский.
2 ответов
попробуйте эту простую анимацию вращения, примененную к изображению.
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);
этот ответ просто ради вопроса, правильно, что кликабельная область будет отличаться от View
текущее положение. Пожалуйста, проверьте этот вопрос, чтобы сделать кликабельную область правильной. кнопка не кликабельна после TranslateAnimation
попробовать 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
, и видимая область, и кликабельная область переместят нужное местоположение.