MockRecyclerView之旅

最近寫了一個項目試圖以ViewGroup為基礎(chǔ),以RecyclerView源碼為原型,用簡化的方式
完成RecyclerView的各項功能,源碼已上傳到github:https://github.com/shuhuaxie/MockRecyclerView,方便大家以此為基礎(chǔ)研究RecyclerView更深層次知識.
腦圖網(wǎng)址:http://naotu.baidu.com/file/b726e52cf4aad52a0bb32b07999257fc?token=c10091e420401e16 (建議在電腦上閱讀)

  1. 顯示

    主要流程如下:

  • 在RecyclerView的onMeasure中根據(jù)需求從Recycler中獲取View

  • 對子View進行measure和layout操作
    (子view的measure和layout不必和父View的對應(yīng))

    主要涉及類:

  • RecyclerView

    提供addView方法,使用onMeasure/onLayout驅(qū)動界面展示.

  • Recycler

    使用Adapter提供View對象

  • LinearLayoutManager

    對View進行布局

  1. 滾動

    onTouch事件分發(fā)

    offsetTopAndBottom執(zhí)行實際的

  2. 點擊

    onInterceptTouchEvent正確的處理點擊和滑動的邏輯

  3. View復(fù)用

    初次顯示界面使用onLayoutChildren

    滾動界面使用scrollBy,阻止了Layout和measure

    添加View到合適的相對位置,去掉不能看到的View,

    然后使用offsetTopAndBottom滑動內(nèi)部的界面

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容