2011-08-03 214 views
3

我正在使用帶有INFINITE重複設置的animationlistener,每次它循環調用onAnimationRepeat函數都很重要。Android動畫速度太慢

這一切都適用於設置爲〜100ms或更高的動畫持續時間。我設置的任何較小值(例如30ms)仍然似乎在100ms左右。我在設備和仿真器上試過這個。

我正在使用Alphaanimation,但我也嘗試過其他類型的android動畫。

有沒有辦法使任何動畫能夠正常工作,持續時間大約爲50ms或更快?

回答

3

與其他「滑動」動畫相比,AlphaAnimation相當資源密集的動畫。

您可以嘗試使用TraceView進行調查,以確切查看掛斷的位置。

我懷疑它只是動畫的開銷,會放慢一切。

給TraceView一個鏡頭,報告結果,我會看看是否可以給出進一步的建議。

希望這會有所幫助!

+0

謝謝你的提示。 AlphaAnimation在性能上似乎比其他的更重要。我將其改爲ScaleAnimation,現在它稍微好一點,但仍然不如我需要的那樣快。然後我創建了一個fakeAnimation類,擴展了Animation,完全沒有什麼,即使如此,animationlistener也沒有像我以** .setduration **設置間隔那樣快。 – UncleIstvan

+0

您是否嘗試使用TraceView查看每種方法需要多長時間?這可能是因爲您每次都在實例化Animation/AnimationFactory。如果您要一遍又一遍地重複執行某些操作,並且每次都重新啓動動畫,而不是創建一個新的動畫,那麼在性能方面更好(儘管您需要小心),以便使用單個控制器。 – Codeman

0

我知道這是舊的,但對於像我現在一樣使用谷歌搜索的人。

嘗試加入到這個動畫XML:

機器人:插值=「@安卓:動畫/ accelerate_decelerate_interpolator」

糾正我,如果我錯了,但我認爲它同時適用於翻譯和Alpha

例子:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="0" android:toXDelta="100%p" 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:duration="300"/> 
</set>