2012-08-14 98 views
8

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

我的动画是这样的;

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秒的延迟启动,该开始时间为动画是-1,开始偏移为0。

回答

2

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

+0

解决方案是切换到ViewPager,动画不完全是我想要的,但延迟消失了。将动画更改为XML不会改变任何内容。 – Thys 2012-09-06 07:49:46

1

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

如果您确定在开始动画后延迟即将到来,则可以在启动动画之前和动画完成之后(再次使用AnimationListener)尝试使用traceview。这会告诉你Android在做什么。

0

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

+0

这是一条评论,而不是答案。 – Joel 2013-07-30 21:06:47

+0

你说得对。但是我无法对实际的帖子进行投票/评论,并且面临同样的问题。已经尝试过基于XML的动画,但他们没有帮助。 – user1102412 2013-07-30 21:20:51

+0

这并不能证明将其作为答案发布。等到你有足够的声望或自己提出一个不同的问题。 – Joel 2013-07-31 13:36:11