ViewFlipper有“巨大”的延迟

时间:2012-08-14 13:39:16

标签: android animation

我有一个ViewFlipper,它在调用showPrevious时运行视图动画。动画效果很好。但问题是它开始延迟超过1秒。现在这似乎并不多,但它严重延迟了应用程序的使用。

我的动画看起来像这样;

Animation inFromLeft = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, -1.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f);
inFromLeft.setDuration(350);
inFromLeft.setInterpolator(new LinearInterpolator());   

Animation outtoRight = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, +1.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f);
outtoRight.setDuration(350);
outtoRight.setInterpolator(new LinearInterpolator());

我使用setInAnimationsetOutAnimation;

设置了动画
setInAnimation(inFromLeft);
setOutAnimation(outtoRight);

然后我使用showPrevious

启动动画

动画以超过1秒的延迟开始是否有任何原因,动画的startTime为-1且startOffset为0。

3 个答案:

答案 0 :(得分:2)

两个建议。首先,如果可能,请切换到使用ViewPager。其次,如果第一个不可能,那么使用基于XML的动画。将代码和资源推出资源通常是一种胜利。

答案 1 :(得分:1)

你确定动画中发生了延迟吗?您是否尝试添加一些日志记录,包括AnimationListener的startAnimation方法?

如果您确定在开始动画后出现延迟,则可以在开始动画之前和完成之后尝试使用traceview(再次使用AnimationListener)。这将告诉你Android在此期间做了什么。

答案 2 :(得分:0)

面对与@MrThys相同的问题,但只能在Gingerbread设备上看到它。在JellyBean设备上没有这样的问题。