多个视图和动画滞后

Deh*_*zer 1 animation android lag

我有两个RelativeLayout视图。第一个大约有三个孩子。第二个视图只有第一个视图作为其子视图。我有两个动画fadeIntranslateIn,必须分别将它们应用于视图firstViewsecondView。下面的代码正在工作。它们同时开始和结束,但是很滞后。不太顺利。我可以做些什么来同时平稳运行它们?

这是代码:

private static final int duration = 500;
protected static boolean ANIMATION_FINISHED;

protected static void onShowAnimation() {

    int width;
    ANIMATION_FINISHED = false;
    width = getScreenWidth();

    final AlphaAnimation fadeIn = new AlphaAnimation(0, 1);
    final TranslateAnimation translateIn = new TranslateAnimation(-width, 0, 1, 1);

    fadeIn.setDuration(duration);
    translateIn.setDuration(duration);

    firstView.startAnimation(translateIn);
    secondView.startAnimation(fadeIn);

    secondView.postDelayed(new Runnable() {

        @Override
        public void run() {
            ANIMATION_FINISHED = true;
        }
    }, duration);
}
Run Code Online (Sandbox Code Playgroud)

Bud*_*ius 5

直到姜饼,动画在Android中一直都很落后。在Honeycomb中,他们用新框架修复了它,但是开发人员(就是您)必须知道要使用哪个框架。

有一个很好的流畅的硬件加速动画,你应该使用android.animationandroid.view.animation

在这里,您可以获得有关属性动画框架的完整指南:https : //developer.android.com/guide/topics/graphics/prop-animation.html

这是它的基类:https : //developer.android.com/reference/android/animation/package-summary.html

如果您需要针对姜饼或以下版本的设备,建议您使用NineOldAndroid库,该会自动处理该设备的最佳框架。(记住它在2.3上仍然会落后,但是至少3.0+会很平滑)。

ps .:您不应使用a postDelayed来知道动画何时结束,而应使用Animation Listener