RecyclerView自定義Layoutmanger-瞭解

onLayoutChildre 會調用 detachAndScrapAttachedViews 分離 ViewHolder 存儲到相應的緩存(Recycler)中去

這裏拿出了 LinearLayoutManger 佈局的流程(簡單的過程):
fill ->
這裏簡單的講解下 onLayoutChildren 的 fill 邏輯

public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
	detachAndScrapAttachedViews(recycler);
	// 繪製流程(從上往下,從下往上)
    if (mAnchorInfo.mLayoutFromEnd) {
    	// fill towards start
    	updateLayoutStateToFillStart(mAnchorInfo);
    	fill(recycler, mLayoutState, state, false);
    	// fill towards end
    	updateLayoutStateToFillEnd(mAnchorInfo);
    	fill(recycler, mLayoutState, state, false);
    } else {
    	// fill towards end
    	updateLayoutStateToFillEnd(mAnchorInfo);
    	fill(recycler, mLayoutState, state, false);
    	// fill towards start
    	updateLayoutStateToFillStart(mAnchorInfo);
        fill(recycler, mLayoutState, state, false);
    }
}

在這裏插入圖片描述

相關類 含義
AnchorInfo 繪製子View的時候,記錄其位置,偏移量,方向等信息
LayoutChunkResult 加載子View結果情況的記錄,比如已經填充的子View的數量
LayoutState 當前加載的狀態記錄,比如當前繪製的偏移量,屏幕還剩餘多少空間等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章