旋转动画无法在Android 4.4.4上运行

时间:2015-11-06 09:23:39

标签: android animation rotation android-4.4-kitkat

我已经为我的按钮使用了旋转动画。它在Android 5.0及更高版本上运行良好但在Android 4.4版本上测试时。它眨眼,不旋转。 AS其他人建议我尝试使用Layer类型,之后填充并填充。但没有任何作用。以下是我的代码:

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

2 个答案:

答案 0 :(得分:1)

这听起来像是硬件加速问题:尝试将LayerType / View的{​​{1}}设置为Button

LayerType.SOFTWARE

我还建议尝试稍微增加动画的持续时间(例如最多400毫秒)。

答案 1 :(得分:1)

是的,我找到了自己问题的答案。我尝试过在不同的地方设置Layer类型和许多其他解决方案。但有人建议我使用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();