我有一個ListView,每個項目都是一個包含多個視圖的自定義佈局(包括〜445x250的大圖像,〜40x40的較小圖像等)。在滾動時,動畫非常波動。ListView顯示大圖像時性能差
有人可以推薦我如何提高性能?
我試過的一種方法是消除正在使用的圖像中的任何透明度。這確實稍微改進了一點,但在新項目滾動查看之前,仍然有明顯的滯後。
更新: 這裏的自定義佈局視圖層次結構(各項目) - http://pastie.org/3333903
我有一個ListView,每個項目都是一個包含多個視圖的自定義佈局(包括〜445x250的大圖像,〜40x40的較小圖像等)。在滾動時,動畫非常波動。ListView顯示大圖像時性能差
有人可以推薦我如何提高性能?
我試過的一種方法是消除正在使用的圖像中的任何透明度。這確實稍微改進了一點,但在新項目滾動查看之前,仍然有明顯的滯後。
更新: 這裏的自定義佈局視圖層次結構(各項目) - http://pastie.org/3333903
綜觀提供的佈局,有可能會導致性能問題的幾件事情:
RelativeLayout
/TableLayout
而不是嵌套LinearLayout
s。ListView
的用途 - 如果您的行開始變得複雜,則可能是顯示此信息的其他信息的標誌。GestureOverlayView
對於ListView
行項目似乎有點沉重。這是必要的嗎?考慮到ListView
可以通過觸摸進行滾動,在行項目上進行自定義手勢可能有點混亂。您還可以嘗試使用android:persistentDrawingCache="scrolling"
和ViewHolder模式來擠出更多的性能。
如果您下載最新版本的ADT,它還將指導您優化佈局。
除了佈局優化,最小的工作應該在的getView
方法中完成。
此外,您可以使用android:hardwareAccelerated="true"
來利用Android 3.0+中的硬件。
發佈您的列表項目的佈局。 – 2012-02-07 11:57:19
您是否在自定義適配器的getView()方法中使用了'convertView'和'ViewHolder'模式? – Luksprog 2012-02-07 11:57:58
@slukian我使用convertView,但不是ViewHolder模式。我曾嘗試過ViewHolder模式,但改進不可察覺。我懷疑造成滯後的主要原因是大型縮略圖的渲染,佔據屏幕的30-40%。 – sparkymat 2012-02-07 11:59:32