2011-09-07 22 views
6

的性能我使用的是ViewAnimator(父類的ViewFlipper)做出某種互動的書。 層次結構大致是這樣的:如何提高ViewFlipper/ViewAnimator

<ViewAnimator> 
    <include layout="@layout/p0" /> 
    <include layout="@layout/p1" /> 
    <include layout="@layout/p2" /> 
    ... 
</ViewAnimator> 

所以這本書的頁數是ViewAnimator內。每個頁面都有一個帶有多層動畫ImageViews,TextViews,Buttons的FrameLayout ......結果太多了。通過viewAnimator.showNext()顯示本書的新頁面可能需要幾秒鐘。所有這些時間都花在ImageView.onDraw()-Traceview中。

-Will any Layout 替代ViewAnimator(ViewPager,ViewGroup的其他實現...)可以改善什麼?

- 是否有任何方法預先加載視圖一個ViewFlipper/ViewAnimator /其他將顯示下一個? (以便本書的下一頁總是準備好並且在內存中快樂)

- 我應該使用Canvas還是GLSurfaceView? (不能使用動畫框架)

我卡住了......你能幫忙嗎?

+0

我試圖用ViewFlipper模仿全景控制在Windows Phone的行爲,並有同樣的問題(慢視圖翻轉)。如何改進ViewFlipper視圖切換? – anonim

回答

3

我無法回答你所有的問題,但我會告訴你我所知道的,因爲它比沒有其他答案更好。 :P

ViewPagers默認情況下在任一側加載視圖。這會加快交換機速度,但可能會減慢當前打開的視圖。 viewpager上的預加載視圖的數量可以使用其中一種方法進行設置。

如果你不想要一個ViewPager,你可以試着實例化你想要自己預裝的視圖,並簡單地將它們設置爲不可見。

我不是用帆布或GL除了地圖疊加經歷過,但我希望他們可以更快/響應/有效的,如果實施得當,因爲你不會有任何不必要的功能。可能會很麻煩,取決於你的內容來源。

建議: 嘗試ViewPager,它是爲像你的實現而製作的。如果您不滿意,請捲起袖子並檢查畫布。

4

爲了提高ViewFlipper的性能,您可以設置

的android:measureAllChildren在XML = 「假」

。對於FrameLayout,這通常設置爲false,但由於某種原因,ViewAnimator默認啓用它。

將它設置爲false解決了一個非常奇怪的滯後問題。

+0

......非常真實。感謝您的大開眼界 –