如何通过ObjectAnimator旋转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); } } 

任何人都可以帮助我解决这个问题,或者这些是任何其他方式来创build一个旋转可绘制animation。

我很抱歉,我可怜的英语。

Solutions Collecting From Web of "如何通过ObjectAnimator旋转drawable?"

试试这个简单的旋转animation应用于图像。

  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后,button不可点击

请尝试使用ObjectAnimator

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

编辑 由于这个问题引起一些注意,让我来解释为什么要使用ObjectAnimator而不是其他过渡animation师

关于使用ObjectAnimator的一点是,如果您使用其他animation方法(例如Transition Animation或其他animationObjectAnimator ),则它将同时移动项目的可见区域和可点击区域,假设您想要从左下angular移动Button屏幕左上angular,只会移动可见区域,而不会移动Button本身,可点击区域仍然位于上一个位置,在这种情况下,可点击区域仍然在左下angular,而不是左上angular你在哪里移动了button。

如果您使用ObjectAnimator执行相同ObjectAnimator ,则可见区域和可点击区域都将移动到所需的位置。