Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to rotate a drawable by ObjectAnimator?

Tags:

Alphaing a drawable work well like this:

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);  } 

But if I want rotate a drawable like below , it don's work.

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);     } } 

Anyone can help me to fix this issue, or these is any other way to create a rotation drawable animation .

I am sorry to my poor English.

like image 425
marine8888 Avatar asked Dec 26 '12 10:12

marine8888


1 Answers

Try with ObjectAnimator instead.

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

EDIT Since this question draw some attention let me to explain why to use ObjectAnimator instead of other Transition animators

The thing about using ObjectAnimator is that it's moving both the visible and the clickable area of the item, if you use another animation method, for example Transition Animation or some other Animators, and let's say if you want to move the Button from the bottom left of the screen to the top left, it will only move the visible area but not the Button itself, the clickable area will still be on the previous position, in this case the clickable area will still be on the bottom left instead of the top left where you moved the button.

If you do the same with ObjectAnimator, both the visible area, and the clickable area will move the the desired location.

like image 182
Naskov Avatar answered Sep 21 '22 08:09

Naskov