效果图:

      

1.顶部会悬浮章的部分

2.第二章上滑会推挤第一章

3.第二章下拉会带出第一章

4.并不是所有时候都有悬浮部分(为什么这条标红,因为市面上几乎所有的悬浮都是必须存在且在顶部,害的我必须自己写)

如果你要的只是和IOS通讯录相似的效果,即总有一行悬浮在顶部,百度stickyItemDecoration即可,网上一抓一大把,这里随便参考一个http://blog.csdn.net/briblue/article/details/70211942 ,原理很简单,就是给recyclerview分组,每个item都带一个header头布局,同一组第一个才显示,其他位置不显示,自带动效

可惜啊,我这里屏幕顶部还有其他的布局,导致一开始不能悬浮

根据顶部可见position来显示和隐藏悬浮行,大家都会,我主要讲如果做第二章推挤第一章的动效:

结构图分析如下:

代码如下

private void setTopView() {recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrolled(RecyclerView t, int dx, int dy) {//标题栏底部的Y坐标int[] titleLocation = new int[2];rootLayout.getLocationOnScreen(titleLocation);int titleY = titleLocation[1] + rootLayout.getMeasuredHeight();//最顶部可见的位置int position = layoutManager.findFirstVisibleItemPosition();//第二个布局的顶部Y坐标BaseViewHolder viewHolder = (BaseViewHolder) recyclerView.findViewHolderForAdapterPosition(position + 1);View layout = viewHolder.getConvertView();int[] location = new int[2];layout.getLocationOnScreen(location);int y = location[1];//悬浮章的底部坐标int topBottom = titleY + topChapterLayout.getMeasuredHeight();RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, topChapterLayout.getMeasuredHeight());if (list.get(position) instanceof CourseDetail) {CourseDetail courseDetail = (CourseDetail) list.get(position);CourseDetail courseDetailAfter = (CourseDetail) list.get(position + 1);if (!TextUtils.isEmpty(courseDetail.getChapterTitle())) {params.topMargin = 0;topChapterLayout.setLayoutParams(params);topChapterLayout.setVisibility(View.VISIBLE);chapter.setText(courseDetail.getChapterTitle());switch (courseDetail.getChapterStatus()) {case 0:noComplete.setVisibility(View.VISIBLE);complete.setVisibility(View.GONE);break;case 1:complete.setVisibility(View.VISIBLE);noComplete.setVisibility(View.GONE);break;}if (null == courseDetailAfter) {return;}if (courseDetail.getChapterId() != courseDetailAfter.getChapterId()) {if (y <= topBottom) {int scrollY = y - topBottom;params.topMargin = scrollY;topChapterLayout.setLayoutParams(params);}}}} else {topChapterLayout.setVisibility(View.INVISIBLE);}}});
}

主要原理就是判断y和topBottom的大小,如果第二章已经开始遮盖悬浮的位置了,那悬浮位置就上移,形成推挤的动效

RecyclerView悬浮标题相关推荐

  1. RecyclerView 悬浮/粘性头部——StickyHeaderDecoration

    转载至:https://blog.csdn.net/qian520ao/article/details/76167193 ItemDecoration是recyclerView拓展的一个很好工具,支持 ...

  2. RecyclerView悬浮条

    转载自:http://www.jianshu.com/p/fe69a53502ab 在我们在刷Instagram的动态时,你是否注意到这样一个小小的动效,就是当一条动态(以卡片形式呈现)向上滑动时,动 ...

  3. Android RecyclerView滑动标题置顶

    实现先来看看效果图(由于不会制作gif图所以) 如上图 左边可以点击切换到该标题的子item  右边可以通过滑动更换置顶标题 步骤开始: 一: 导入第三方 implementation 'com.ku ...

  4. Android--RecyclerView分组悬浮标题(分割线)

    客官先看图: https://github.com/angcyo/ContactsPicker/blob/master/screenshot/1%E6%9C%88-15-2017%2016-17-46 ...

  5. div圆角边框,左上角悬浮标题,边框阴影效果

    第一次css技术,谢谢! <!DOCTYPE html> <html><head><meta charset="utf-8" />& ...

  6. 使用CSS实现鼠标悬浮标题出现动态下划线

    今天来实现下面图片的效果 要实现这种效果只需要使用到background这个属性了. 首先创建有个div 输入一段文字 然后在设置background属性 这时候页面就会出现这样子  文字背景填充满了 ...

  7. 安卓作业----慕课移动应用开发作业13之使用自定义RecyclerView.ItemDecoration实现列表悬浮顶部效果

    此博客通过RecyclerView.TextView等进行界面布局,使用自定义RecyclerView.Adapter.RecyclerViewAdapter.ViewHolder以及自定义Recyc ...

  8. lt view gt android,RecyclerView的linearLayoutManager.findViewByPosition()问题

    看到一个博文Android轻松实现RecyclerView悬浮条 @Override public void onScrolled(RecyclerView recyclerView, int dx, ...

  9. 最新最全的 Android 开源项目合集(一)

    原文链接:https://github.com/opendigg/awesome-github-android-ui 抽屉菜单 MaterialDrawer ★7337 - 安卓抽屉效果实现方案 Si ...

最新文章

  1. python 测试框架之---testtools
  2. 计算机应用基础dos,计算机应用基础2(带答案)
  3. 关于 oracle secure backup
  4. docker查询占用端口号服务命令
  5. deepfashion 深度学习_基于Alluxio加速混合云下的Intel Analytics Zoo开源深度学习平台...
  6. MySQL Cookbook 学习笔记-03
  7. lnmp mysql 远程访问_LNMP环境下 远程连接mysql数据库
  8. Ubuntu MySQL 重新安装
  9. yum与apt-get的区别以及两者更新源(阿里/网易【163】)
  10. 粉丝关注数据库表的设计
  11. 【计算机网络】HTTP协议详解
  12. 窃取ClientKey
  13. Django模型、模板和视图
  14. 标准c语言教程gary,C语言标准教程
  15. python处理word文档格式_python处理word文档(docxtpl 中文说明文档)
  16. 每天两分钟 远离电脑病
  17. C#效验身份证号是否正确
  18. win10远程桌面连接计算机密码错误,访问win10的远程桌面(Remote Desktop)总是凭据或者用户密码错误...
  19. 有关REST的一些内容
  20. C++控制台程序(文字小游戏)

热门文章

  1. php datatype=quot;requirequot;,我的问题谁能帮我解决一下??
  2. 安装环境 php5.2 mysql_ubuntu安装配置apache2+php5.2+mysql5环境教程
  3. l298n电机哪一端为正_L298N控制直流电机正反转_张天鹏
  4. 图标适配大小_主题真的是大吃一鲸适配全EMUI
  5. java鼠标监听事件_JAVA 鼠标事件监听ACTIONLISTENER
  6. UML 对象模型图阅读指南 (转)
  7. T-SQL编程基础-基本语法
  8. SQL工具-技术支持工具
  9. 乘风破浪:LeetCode真题_007_Reverse Integer
  10. 网络基础之 Nping 命令