2015-11-06 98 views
3

我已经对我的按钮使用了旋转动画。它在Android 5.0及更高版本上运行良好,但在Android 4.4版本上进行测试。其闪烁并不旋转。正如一些其他人所建议的,我尝试过使用图层类型,之后填充并填充。但没有任何工作。下面是我的代码:旋转动画不适用于Android 4.4.4

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <rotate 
    android:duration="200" 
    android:fromDegrees="0" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:startOffset="0" 
    android:toDegrees="180" 
    android:repeatMode="reverse"> 
    </rotate> 
</set> 

Animation mAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.rotate); 

    mAnim.setAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 

     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
     exchangeValues(); 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
    }); 
    if (floatingActionButton != null) { 
     floatingActionButton.startAnimation(mAnim); 
    } 

回答

1

是的我找到了我自己的问题的答案。我曾尝试设置图层类型以及在不同地方提供的许多其他解决方案。但有人建议我使用ObjectAnimator,它对我来说就像一个魅力。下面是代码

ObjectAnimator floatingButtonAnimator = ObjectAnimator.ofFloat(floatingActionButton, 
    ANIMATION_NAME, ANIMATION_STARTING_DEGREE, ANIMATION_ENDING_DEGREE); 
floatingButtonAnimator.setDuration(ANIMATION_DURATION).addListener(new AnimatorListenerAdapter() { 
    @Override 
    public void onAnimationStart(Animator animation) { 
    super.onAnimationStart(animation); 
    } 

    @Override 
    public void onAnimationEnd(Animator animation) { 
    super.onAnimationEnd(animation); 
    exchangeValues(); 
    } 
}); 
floatingButtonAnimator.start(); 
+0

什么是ANIMATION_NAME? –

+0

什么是'ANIMATION_NAME'?什么是'exchangeValues'? – Divers

1

这听起来像一个硬件加速问题:尝试设置你的View/ButtonLayerType.SOFTWARE

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

LayerType我还会建议尝试小幅增加动画的持续时间(例如高达400ms)

+0

不是为我工作:( –