6

我的项目中的动画有一个相当奇怪的问题。在下面发布的屏幕截图中,您可以清楚地看到总计卡在动画上留下了某种痕迹。这个问题可以在运行 4.2.2 的 Nexus 7 上重现。Totals 卡片具有 Google Now 风格的动画。需要注意的是,Totals 卡的容器是一个 Fragment,横向屏幕截图左侧的 Menu 是一个不同的 Fragment,底部按钮是 Fragments 所附加到的 Activity 的一部分。

风景截图

人像截图

我似乎无法在网上找到解决方案,我尝试过 setFillAfter"true" 并偏移动画的开头。当按下其中一个按钮时,底部 Activity 按钮中的轨迹(“上一个”和“下一个”)会消失。

这是 Totals Fragment 的 onCreateView 中的代码:

    final View view = inflater.inflate(R.layout.fragment_totals,
            container, false);      

    Fonts.setRobotoThinFont(getActivity(), view);

    final LinearLayout mContainer = (LinearLayout)
            view.findViewById(R.id.container);

    final View mCard = inflater
            .inflate(R.layout.view_simpletotal, mContainer, false);

    Animation animation = AnimationUtils.loadAnimation(getActivity(),
            R.anim.card_animation);

    mContainer.addView(mCard);

    mCard.startAnimation(animation);  

    return view;

任何帮助将非常感激!

4

2 回答 2

4

您可以通过在动画结束时简单地使容器活动无效来轻松摆脱它。

于 2013-05-11T23:16:13.307 回答
3

我建议你使用类setLayoutAnimation()的方法ViewGroup。我想它会对你有所帮助。
例如,您可以在片段类中编写此代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ...
    rootView.setLayoutAnimation(getLayoutAnimation());
    ...
}
private LayoutAnimationController getLayoutAnimation() {
    Animation animation = new RotateAnimation(30, 0, -100, 0);
    animation.setDuration(1000);
    LayoutAnimationController layoutAnimationController = new LayoutAnimationController(animation);
    return layoutAnimationController;
}

看看动画会发生什么。

于 2013-05-11T23:30:48.607 回答