【问题标题】:Android Animation leaving artifactsAndroid动画留下工件
【发布时间】:2013-05-06 07:07:17
【问题描述】:

我的项目中的动画有一个相当奇怪的问题。在下面发布的屏幕截图中,您可以清楚地看到总计卡在动画上留下了某种痕迹。这个问题可以在运行 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;

任何帮助将不胜感激!

【问题讨论】:

  • 您是否尝试在动画结束时使整个活动容器无效?
  • 那就摆脱它,非常感谢!这样做是否被视为“良好做法”?
  • 好吧,我认为您应该更好地使用官方参考中显示的片段自定义动画(看起来您正在为整个片段制作动画,不是吗?)developer.android.com/training/animation/cardflip.html
  • 好点,但我正在为片段内部的视图而不是整个片段本身设置动画。不过感谢您的参考!
  • 如果您不介意,我会将给定的解决方案作为答案发布,以便您接受。

标签: android animation android-fragments visual-artifacts


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    @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;
    }
    

    看看动画会发生什么。

    【讨论】:

    • 感谢您的回复!我正在为 Fragment 内部的 View 设置动画,而不是 Fragment 本身,但您的回答可能会帮助我解决另一个不相关的问题。感谢您的意见!
    • 这个例子完全适用于视图。您可以将其应用于您想要的任何 ViewGroup 对象。对于您的示例,您可以将带有总计详细信息的白色块放入一些 ViewGroup,然后应用我建议的动画。如果运行动画会出现一些问题,请将该 ViewGroup 的布局参数设置为 MATCH_PARENT。你可以在这里阅读更多:[链接]developer.android.com/reference/android/view/animation/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多