当前位置:首页 > 安卓源码 > 功能分类 > 其他 >

用RecyclerView:打造悬浮效果Android源码

时间:2017-06-19 17:17 来源:互联网 作者:源码搜藏收藏

  • 源码类别:其他
  • 源码大小:未知
  • 编码格式:gbk,utf8,不限
  • 运行环境:Android studio
  • 广告推荐

悬浮效果

先看个效果效果这是一个City列表,每个City都有所属的Province,需要在滑动的时候,将对应的Province悬浮在顶部。悬浮顶部的Province需要根据列表的滑动而适当改变位置,实现“顶上去”的效果。

实现思路:

  • 利用RecyclerView.ItemDecoration绘制Province(就像绘制分割线一样)
  • 同一组的City,只绘制一个Province
  • 计算偏移,将当前Province固定在顶部
  • 根据列表滑动,实现偏移效果

ItemDecoration

既然是利用RecyclerView.ItemDecoration实现的悬浮效果,那么有必要了解下它。 ItemDecoration字面意思:Item的装饰。是的!是装饰!不只是画分割线。 其实ItemDecoration的功能非常强大,而我们平时只是用它来实现分割线的效果(至少我是这样)。因此,可能很多同学认为ItemDecoration就是用来绘制分割线的。其实不然,ItemDecoration的功能远不止是分割线的绘制。

先看下RecyclerView.ItemDecoration源码(部分):


  1. public static abstract class ItemDecoration {
  2. ...
  3. public void onDraw(Canvas c, RecyclerView parent, State state) {
  4. onDraw(c, parent);
  5. }
  6. public void onDrawOver(Canvas c, RecyclerView parent, State state) {
  7. onDrawOver(c, parent);
  8. }
  9. public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) {
  10. getItemOffsets(outRect, ((LayoutParams) view.getLayoutParams()).getViewLayoutPosition(),
  11. parent);
  12. }
  13. }

里面是我们常用的三个方法:

  • getItemOffsets:通过Rect为每个Item设置偏移,用于绘制Decoration
  • onDraw:通过该方法,在Canvas上绘制内容,在绘制Item之前调用。(如果没有通过getItemOffsets设置偏移的话,Item的内容会将其覆盖)
  • onDrawOver:通过该方法,在Canvas上绘制内容,在Item之后调用。(画的内容会覆盖在item的上层)

RecyclerView 的背景、onDraw绘制的内容、ItemonDrawOver绘制的内容,各层级关系如下:层级关系

本站资源仅限于学习研究,严禁从事商业或者非法活动! 源码搜藏网所有源码来自互联网转载与用户上传分享,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

其他下载排行

最新文章