【问题标题】:Spinning arrow animation on Toolbar not working on first call工具栏上的旋转箭头动画在第一次调用时不起作用
【发布时间】:2015-04-08 09:03:37
【问题描述】:

我有MainActivityFragmentA 和一个较低级别的片段FragmentB。这意味着,在FragmentB 时,我想:

  • 禁用抽屉;
  • 使抽屉图标旋转成向上箭头。

一切正常。在FragmentB我打电话:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ((MainActivity) getActivity()).openLowLevelFragment();
}

@Override
public void onStop() {
    super.onStop();
    ((MainActivity) getActivity()).closeLowLevelFragment();
}

在我的活动中,我有:

public void openLowLevelFragment() {
    animateArrow(0f, 1f);
    mT.setNavigationOnClickListener(...);
    mDL.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}

public void closeLowLevelFragment() {
    animateArrow(1f, 0f);
    mT.setNavigationOnClickListener(...);
    mDL.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}

其中animateArrow() 是我用来在汉堡图标和箭头之间切换的方法,使用ActionBarDrawerToggle.onDrawerSlide()。这工作得很好,比如:

  • FragmentA -> FragmentB :图标旋转为箭头;
  • FragmentB -> FragmentA :箭头转回抽屉图标;

问题是第一次我去FragmentB,动画不工作,即我看到汉堡图标进入最后一个状态(箭头)没有动画。为什么?我能做什么?

我将在这里发布我的价值动画师。感谢您的帮助。

public void animateArrow(float start, float end) {
    ValueAnimator anim = ValueAnimator.ofFloat(start, end);
    anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float slideOffset = (Float) valueAnimator.getAnimatedValue();
            mABDT.onDrawerSlide(mDL, slideOffset);
        }
    });
    anim.setInterpolator(new AccelerateDecelerateInterpolator());
    anim.setDuration(250);
    anim.start();
}

【问题讨论】:

    标签: android android-animation material-design


    【解决方案1】:

    我认为这与渲染 UI 之前完成的动画有关。动画将在没有布局的视图上发生,因此请检查视图的布局(在您的情况下为片段 B)是否在动画之前呈现。

    【讨论】:

    • 您是否看到任何解决方法?另外,当 B 的第一个实例已经通过 onDestroy() 时,为什么它会在第二次(A->B)工作?
    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多