8

我有一个 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());

setInAnimation我使用and设置动画setOutAnimation

setInAnimation(inFromLeft);
setOutAnimation(outtoRight);

然后我只是使用启动动画showPrevious

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

4

3 回答 3

2

两个建议。首先,如果可能,改用 ViewPager。其次,如果第一个不可行,则使用基于 XML 的动画。将东西从代码中推到资源中通常是一种胜利。

于 2012-08-20T08:30:58.870 回答
1

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

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

于 2012-08-26T17:18:13.213 回答
0

面临与@MrThys 相同的问题,但只能在 Gingerbread 设备上看到。JellyBean 设备上没有此类问题。

于 2013-07-30T20:46:49.013 回答