2011-07-08 36 views
6

我有一個自定義視圖,我試圖顯示,但是我看到一堆抖動。全部滾動速度緩慢,並且不如應有的那樣快速響應。GLES20Canvas.nDrawDisplayList很慢

我用traceview,看到

GLES20Canvas.nDrawDisplayList

似乎負責採取了很多的時間來執行。

請幫忙嗎?

回答

3

GLES20Canvas.nDrawDisplayList預計會佔用很大一部分時間,如果您繪製很多,尤其是非常大的視圖。 如果你看到遍及你的traceview的答案是「DRAW LESS」

在我的具體問題中,我在大視圖上繪製了一個大的alpha圖層。 我會推薦閱讀Do's和Dont's from Android 3.0 Hardware Acceleration by Romain Guy

+5

我已經在不同設備上針對相同的活動,片段和視圖運行此分析。我只看到HTC One設備上的nDrawDisplayList上的大延遲(http://stackoverflow.com/a/21791909/546901)。其他線程中的人員會將此跟蹤查看結果報告爲設備特定(https://code.google.com/p/android/issues/detail?id=22514)。其他設備具有健康的追蹤查看結果。它似乎可能是一個設備或操作系統級別的問題。大多數人似乎在ScrollView或ListView上觀察它。 –

+1

我使用Galaxy S4進行測試,默認情況下硬件加速(Target API Level 19),通過在我的'GridView'上放置'android:layerType ='software'',渲染實際上變得更快。注意:不要將此作爲最終解決方案,請嘗試找到根本原因。 – TWiStErRob