我有MainActivity
,FragmentA
和较低级别的片段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();
}
答案 0 :(得分:0)
我认为它与动画在渲染UI之前已经完成有关。动画将在没有布局的视图上出现,因此请检查视图的布局(在您的情况下为片段B)是否在动画之前呈现。