MockRecyclerView之旅

最近写了一个项目试图以ViewGroup为基础,以RecyclerView源码为原型,用简化的方式
完成RecyclerView的各项功能,源码已上传到github:https://github.com/shuhuaxie/MockRecyclerView,方便大家以此为基础研究RecyclerView更深层次知识.
脑图网址:http://naotu.baidu.com/file/b726e52cf4aad52a0bb32b07999257fc?token=c10091e420401e16 (建议在电脑上阅读)

  1. 显示

    主要流程如下:

  • 在RecyclerView的onMeasure中根据需求从Recycler中获取View

  • 对子View进行measure和layout操作
    (子view的measure和layout不必和父View的对应)

    主要涉及类:

  • RecyclerView

    提供addView方法,使用onMeasure/onLayout驱动界面展示.

  • Recycler

    使用Adapter提供View对象

  • LinearLayoutManager

    对View进行布局

  1. 滚动

    onTouch事件分发

    offsetTopAndBottom执行实际的

  2. 点击

    onInterceptTouchEvent正确的处理点击和滑动的逻辑

  3. View复用

    初次显示界面使用onLayoutChildren

    滚动界面使用scrollBy,阻止了Layout和measure

    添加View到合适的相对位置,去掉不能看到的View,

    然后使用offsetTopAndBottom滑动内部的界面

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容