2012-08-14 53 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