ListView原理

查看了源碼,簡單記一下。

資源控制:

ListView中的特點是可以複用item,節省內存空間。

複用的原理是,凡是滾出屏幕的viewItem都會被放在一個RecycleBin中,等待回收。這裏的ViewItem是和ListView沒有關聯的。

當滾動需要跟上顯示一個Item時,就從RecycleBin中取得一個View(能爲空),放在需要的位置。


滾動原理:

View的畫布是無限大的(沒有定義畫布的寬和高),並且和父View使用的是同一個畫布(也就是說,頁面上所有View同一個畫布),只有座標系不同。

每一個View的繪圖位置由父View指定,大小由高寬決定。當一個子View相對於父View產生滾動時,父View會給被滾動的View重新指定座標,從而產生滾動效果。

所以,一個View在“滾動”時,實際上是改變這個View在畫布的上的座標位置(從座標原點開始繪圖,就是View左上角在畫布總的位置。)


ListView中的滾動,ListView是父View,每一個ItemView是子View。

當某一個ItemView的座標位置超出了ListView的邊界,ItemView不會被畫在畫布上,而是被RecycleBin回收。

當需要滾進一個ItemView時,則從RecycleBin中取出一個被回收的ItemView(沒有就創建一個新的),繪製在指定的畫布位置上。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章