這是一個非常具體的情況,所以我會盡我所能來適當組織這個問題。我有一個自定義ViewGroup
正在爲我的目的工作,但它的初始化導致跳幀。Android的ViewGroup使用
我的應用程序包含一個ViewPager
的Fragment
的每個父容器是一個ScrollView
。在這些之中,我有很多不同的觀點,其中一個是包含垂直行自定義視圖(用於操縱數據集)的LinearLayout
。見圖片「前臺,可見,二級應用」
此佈局,我已經擴展LinearLayout
,每一個在運行時填充,從充氣XML每一個孩子。
它工作正常,問題是,在運行時對所有這些子視圖充氣會導致跳幀。我使用方法跟蹤來發現每個LayoutInflater.inflate()
的呼叫正在平均4-6毫秒。在我的所有包含一個或多個這些列表的片段之間,它在啓動時會加入大量(40-50)跳幀。
手動創建子視圖而不是膨脹提高了一點,但還不夠。仍然非常明顯的跳幀。
它需要某種形式的重複使用,類似於ListView
所做的。
我看到一個解決方案,儘管它看起來並不理想。 即用多種視圖類型替換片段容器ScrollView
與ListView
。
一些問題,我這個看到的是
- 它需要的意見上,下之間長達5-6個不同視圖類型,這些列表之間。似乎寫得很亂。
- 每個子視圖都需要能夠通過簡單的展開/摺疊動畫來垂直擴展大小。不知道這是甚至可能與
ListView
行有關。 - 它涉及重寫幾乎整個應用程序。我願意做但願儘可能避免。
我不知道是不是在所有可能的事:
- 使用
LinearLayout
這些列表代替,使用ListView
,並且具有其尺寸擴大到顯示所有項目。它將嵌套在父項ScrollView
中。如果它的大小擴展到所有項目,它甚至會重用任何視圖嗎?
在這種情況下是否還有其他類型的容器?我還沒有使用新的RecyclerView
,但從我讀過的內容看來,它基本上與ListView
相同。
基本上我想創建的是回收視圖的LinearLayout
。
希望有任何建議。請讓我知道,如果這個問題不能很好地閱讀,我可以添加更多的信息或郵政編碼,如果需要的話。我意識到我在這裏要做的事情有點不合常規,並且可能由於設計本身存在缺陷。但我對目前的介紹感到非常滿意,並希望保持這種狀態。
很棒的建議。我會盡快完成這個嘗試。 –
如果它幫助你解決你的問題,請將答案標記爲已接受。 – Anonymous
我仍然有框架跳過這個。我有另一個想法,在工作線程中誇大這些視圖,並在'onPostExecute'中附加到父項。它在我的設備上完美運行,這樣做有什麼問題嗎? –