当前位置: 首页 > news >正文

phpcms 图片网站免费商城网站建设

phpcms 图片网站,免费商城网站建设,wordpress安装插件出现api,公众号制作流程介绍 RecyclerView是Android开发中常用的一个高度可定制的列表视图组件。它是在ListView和GridView的基础上进行了改进和增强#xff0c;旨在提供更好的性能和更灵活的布局管理。 RecyclerView的主要特点如下#xff1a; 灵活的布局管理器#xff08;LayoutManager#…介绍 RecyclerView是Android开发中常用的一个高度可定制的列表视图组件。它是在ListView和GridView的基础上进行了改进和增强旨在提供更好的性能和更灵活的布局管理。 RecyclerView的主要特点如下 灵活的布局管理器LayoutManager RecyclerView使用LayoutManager来管理其子视图的布局方式。不同的LayoutManager可以实现不同的布局效果如线性布局、网格布局、瀑布流布局等。可以根据需要选择适合的LayoutManager或自定义LayoutManager。 高效的回收再利用机制 RecyclerView通过Recycler来处理子视图的回收和再利用。当子视图滑出屏幕时RecyclerView会将其回收并标记为可重用。这样可以减少内存占用提高性能。 分离的ViewHolder模式 RecyclerView使用ViewHolder模式来管理子视图的数据绑定。通过创建ViewHolder来保存子视图的引用可以避免频繁的findViewById操作提高列表项的渲染效率。 动画支持 RecyclerView提供了对列表项的动画支持。可以通过设置ItemAnimator来实现添加、删除、移动等操作时的动画效果为列表增添交互和视觉效果。 事件拦截与处理 RecyclerView支持事件的拦截和处理可以监听和处理子视图的点击、长按、滑动等事件并根据需要进行相应的操作。 RecyclerView嵌套滑动 1.RecyclerView的嵌套滑动开始时会调用dispatchNestedPreScroll方法通知父容器即将发生的滑动事件。这是为了让父容器例如外部的ScrollView或NestedScrollView有机会对滑动事件进行预处理。 2.在dispatchNestedPreScroll之后RecyclerView会调用scrollByInternal方法进行滚动操作。scrollByInternal方法会计算滚动的偏移量并将其应用到RecyclerView的内容上。 3.接着RecyclerView会调用dispatchNestedScroll方法通知父容器滑动的实际情况包括滑动的距离和方向等信息。父容器可以根据这些信息来进行相应的处理例如触发边缘效果。 4.在dispatchNestedScroll方法之后RecyclerView会调用scrollStep方法其中包含滚动的水平和垂直偏移量。scrollStep方法会调用LayoutManager的scrollHorizontallyBy和scrollVerticallyBy方法以实现具体的滚动效果。 5.scrollHorizontallyBy和scrollVerticallyBy是LayoutManager的内部方法负责处理具体的水平和垂直滚动。它们会根据偏移量更新RecyclerView中可见视图的位置。 6.在滚动过程中LayoutManager会调用layoutChunk方法来填充新的可见视图。在这个过程中RecyclerView会调用recycler.getViewForPosition方法来获取指定位置的视图并使用measureChildWithMargins方法来测量视图的尺寸。 7.measureChildWithMargins方法是用来测量RecyclerView中每个可见视图的尺寸的。它考虑到视图的padding、margin和inset分割线的空间等因素确保视图能够正确地布局在RecyclerView中。 Fill方法 RecyclerView中的fill方法是用来填充可见视图的核心方法。在RecyclerView进行滚动时fill方法会被反复调用用于根据滚动方向和滚动偏移量来填充新的可见视图。 fill方法的主要逻辑 1.首先fill方法会根据滚动方向垂直或水平获取RecyclerView的布局状态LayoutState布局状态中包含了一些关键信息比如当前可见的位置、偏移量等。 2.然后fill方法会根据布局状态中的信息调用LayoutManager的next方法获取下一个要填充的子视图。LayoutManager会根据当前的布局状态和回收池Recycler中的视图选择合适的子视图并返回给fill方法。 3.接下来fill方法会调用LayoutManager的measureChildWithMargins方法对子视图进行测量。这个方法会考虑到子视图的padding、margin和inset等因素确保子视图能够正确地布局在RecyclerView中。 4.然后fill方法会调用LayoutManager的layoutDecorated方法对子视图进行布局。layoutDecorated方法会设置子视图的位置和尺寸将其正确地放置在RecyclerView中的指定位置。 5.填充完一个子视图后fill方法会更新布局状态中的一些信息比如当前可见的位置、偏移量等。 6.接着fill方法会判断是否填充完所有可见位置的子视图。如果还有未填充的位置fill方法会继续进行下一轮的填充。 通过不断调用fill方法RecyclerView能够动态地填充滚动过程中新出现的可见视图并回收滚出屏幕的不可见视图实现高效的滚动和视图复用。 需要注意的是fill方法的具体实现是由LayoutManager来定义的不同的LayoutManager可能会有不同的实现逻辑。在自定义LayoutManager时可以重写fill方法来实现特定的布局需求。 RecyclerView的多级缓存 mChangeScrap与 mAttachedScrap mChangedScrap该列表用于缓存仍然在屏幕内但【数据发生变化】的ViewHolder。当RecyclerView执行布局过程时它会标记数据有变化的ViewHolder并将它们添加到mChangedScrap中以便在稍后重新绑定数据。 mAttachedScrap这个列表用于缓存仍然在屏幕内且可见的ViewHolder。当RecyclerView滚动时屏幕上新进入的ViewHolder会添加到mAttachedScrap中以便在稍后进行布局和数据绑定。 ViewHoldermCachedViews 这个列表用于缓存已经离开屏幕的ViewHolder。当RecyclerView滚动时屏幕上移出的ViewHolder会添加到mCachedViews中。这些ViewHolder被缓存起来以便在需要时可以快速复用而不必重新创建。 ViewHoldermViewCacheExtension 这个机制允许开发者自定义视图的缓存和复用逻辑。通过实现ViewCacheExtension接口开发者可以指定一种特定类型的视图缓存方式以提高复用效率。 RecycledViewPool 这是一个全局的ViewHolder缓存池。当RecyclerView无法从其他缓存列表中找到可复用的ViewHolder时它会尝试从RecycledViewPool中获取。这个缓存池可以跨不同类型的ViewHolder进行复用以提高整体的复用效率。 RecyclerView进行ViewHolder的回收和复用时使用了以下几个关键的数据结构 mCachedViews 这是一个ArrayList用于缓存已经离开屏幕的ViewHolder。RecyclerView默认情况下会为该列表分配2个ViewHolder的空间即DEFAULT_CACHE_SIZE 2。如果列表已满最旧的ViewHolder将被移除。也可以使用setViewCacheSize方法来设置这个缓存列表的大小。 scrapHeap 这也是一个ArrayList用于存放回收池中的ViewHolder。回收池是全局的供整个RecyclerView使用。RecyclerView默认情况下会为该列表分配5个ViewHolder的空间即DEFAULT_MAX_SCRAP 5。当需要复用ViewHolder时首先尝试从回收池中获取ViewHolder。可以使用setMaxRecycledViews方法来设置回收池中ViewHolder的最大数量。 mScrap 这是一个SparseArray用于存储不同类型ViewHolder的回收数据。它是一个以整数作为键viewType的映射表每个键对应一个ScrapData对象。ScrapData对象包含了该类型ViewHolder的回收池mScrapHeap。通过这种方式RecyclerView能够针对不同的ViewHolder类型进行缓存和复用。 缓存复用 针对什么? 保存的是什么 对于ViewHolder的缓存复用针对的是不同类型的ViewHolder。保存的是已经创建过的、暂时不再需要显示在屏幕上的ViewHolder。 具体来说 缓存池中复用ViewHolder从回收池中获取 当需要创建一个新的ViewHolder时首先会尝试从回收池中获取对应类型的ViewHolder。回收池是一个用于缓存已创建的ViewHolder的池子。如果回收池中有可用的ViewHolder就可以直接复用它而无需重新创建。这个过程会调用onBindViewHolder方法用于更新ViewHolder的数据和界面。 从缓存视图列表中复用ViewHolder 如果回收池中没有可用的ViewHolder那么就会尝试从缓存视图列表中获取。缓存视图列表是一个专门用于缓存离开屏幕的ViewHolder的列表存储了一定数量的ViewHolder。如果成功从该列表中获取到可复用的ViewHolder就可以直接使用无需重新创建并且也无需调用onBindViewHolder方法因为这个ViewHolder之前已经显示过并绑定了数据。 如果无法从上述两个地方获取可复用的ViewHolder才会调用onCreateViewHolder方法创建一个新的ViewHolder实例并通过onBindViewHolder方法绑定数据和界面。 综上所述ViewHolder的缓存复用机制通过回收池和缓存视图列表来保存已经创建过的、暂时不再需要显示的ViewHolder实例。这样可以避免频繁地创建和销毁ViewHolder提高RecyclerView的性能和效率。
http://www.pierceye.com/news/599477/

相关文章:

  • 网站创建的基本流程seo网站排名全选
  • 乐山网站公众号建设wordpress微电影模板
  • 天津专门做网站长春市网站制作
  • 怎样用php做网站英文网站建设580
  • 凡客登录入口网站优化垂直化好还是扁平化好
  • 网站诊断高端网站建设 杭州
  • 营销网站案例北京公司建设网站
  • 网站建设全域云网店美工的职责有哪些
  • seo优化网站的手段亚洲国产中文域名查询
  • 网络营销网站源码学校网站建设评审会议通知
  • 品牌网站升级创意设计椅子
  • 海口网站制作公司商标注册网上查询
  • 世界上前端做的最好的网站2345浏览器官网网址
  • 做模板网站赚钱吗网站建设需要多少内存
  • C语言网站开发pdf专科网站开发简历
  • 静态网站怎么做优化网站建设用什么软件
  • 如何建设移动端网站物联网设计
  • 赣州网站设计哪里好天河网站建设多少钱
  • 做lol直播网站设计一个公司网站多少钱
  • 电商网站 投诉百度录入网站
  • 如何做产品网站网页论坛的网站开发项目
  • 如何在记事本中做网站链接冰雪蜜城店加盟费多少
  • 中山网站建设公司专业建站公司设计
  • 汽车手机网站制作一个具体网站的seo优化
  • 手机网站的页面大小wordpress下载主题博客
  • 创客贴设计网站官网高端网站制作网址
  • 衡水网站建设选哪家信用网站系统建设方案
  • 网站全屏代码如何做网站外链
  • 中国人自己的空间站哪里有免费的网站模板下载 迅雷下载 迅雷下载软件
  • 网站建设預算网站的新闻模块怎么做