使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+TabLayout+ViewPager,实现tab滑动吸顶效果简直完爆ScrollView实现的效果。

AppBarLayout + CollapsingToolbarLayout有几大有点:

1.无需处理ScrollView + ViewPager的滑动事件冲突

2. 无需关注ScrollView 和 RecyclerView滑动是否触底或者触顶

3. 实现起来超级简单,无需做其他优化,除非你有特殊需求。

废话不多数,直接上代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bg"android:fitsSystemWindows="true"><com.google.android.material.appbar.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/transparent"android:fitsSystemWindows="true"><!-- 从顶部滑出的部分 --><com.google.android.material.appbar.CollapsingToolbarLayoutandroid:id="@+id/coll"android:layout_width="match_parent"android:layout_height="wrap_content"android:fitsSystemWindows="true"app:layout_scrollFlags="exitUntilCollapsed|scroll"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/clTopHead"app:layout_collapseMode="parallax"android:layout_width="match_parent"android:layout_height="wrap_content"app:layout_constraintTop_toTopOf="parent"><ImageViewandroid:id="@+id/iv_top"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@drawable/bg_creator_top"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></com.google.android.material.appbar.CollapsingToolbarLayout><!-- 折叠、吸顶部分 --><LinearLayoutandroid:id="@+id/clContentTopParent"android:layout_width="match_parent"android:layout_height="86dp"app:layout_constraintTop_toTopOf="parent"><include layout="@layout/header_search_creator" /></LinearLayout></com.google.android.material.appbar.AppBarLayout><androidx.viewpager.widget.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior" /></androidx.coordinatorlayout.widget.CoordinatorLayout>

其中AppBarLayout 和CollapsingToolbarLayout 分别对应的功能已经代码中已加了注释

属性layout_collapseMode是用来控制折叠效果的,可以不设置,默认是直接将top推上去。

app:layout_collapseMode="parallax"

可以看到明显的折叠效果。其他效果可以自行测试。

你没看错,布局文件到此就写完了,其他的业务代码需要你自己去完成了。

ViewPager,RecyclerView都使用系统的可以了,无需做额外的工作量。

当然,如果对效果不满意,可以自动定制化处理,上面的效果已经完全符合我的预期了。

好了,有问题我们继续探讨

纯享版-Android AppBarLayout + CollapsingToolbarLayout丝滑自动折叠、吸顶相关推荐

  1. 【使用篇】WebView 实现嵌套滑动,丝滑般实现吸顶效果,完美兼容 X5 webview

    本文首发我的公众号徐公,收录于 Github·AndroidGuide,这里有 Android 进阶成长知识体系, 希望我们能够一起学习进步,关注公众号徐公,5 年中大厂程序员,一起建立核心竞争力 背 ...

  2. 油管613万播放的星巴克3小时背景音乐无广告纯享版下载

    今天看到油管上有星巴克背景音乐的推荐,就点了进去 星巴克的背景音乐,确实算的上优质的白噪音,在家里也营造出咖啡厅的感觉. 然而,很多油管视频中间是插广告的,非常影响体验. 于是我找了个最高播放613万 ...

  3. #Android笔记# 超级足球app 开发总结(三)—— CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout实现两种折叠效果

    最近利用业余时间,开发了一款基于懂球帝接口数据的足球资讯app,整体的UI也是仿照懂球帝设计的.这是一个比较综合的项目,用到了不少以前没用过的组件和api,而且产生了很多新的开发思路,有些实现方式也是 ...

  4. Android web界面丝滑进度条

    文章目录 一.ProgressBar不平滑的原因 二.web平滑ProgressBar实现 三.SmoothProgressBar源码解析 一.ProgressBar不平滑的原因 Android编写W ...

  5. Android 软键盘丝滑切换(一)

    在开发app中,软键盘弹出会有卡顿,闪一下的现象,会影响体验效果.为了实现微信软键盘与表情面板流畅的切换效果,查看了好多例子,查阅的很多资料,换了几种实现方式,都达不到流畅切换的效果,最终结合资料,参 ...

  6. 树状数组-Java代码纯享版

    /**原始数组下标从0开始,bitTree数组下标从1开始,目的是为了符合lowbit操作,lowbit可以理解为构造新数组的一种方法(比较直观简单的理解) **/ public class BITD ...

  7. 英语句式参考纯享版 - 状语从句

    [ 状语从句 ]  注意:时间.地点.原因.条件.方式.让步.目的.结果,状语修饰谓语, [ 时间状语从句 ] 注意:时间状语可以放在开头,用逗号隔开,也可以放在结尾,注意时态问题 (主将从现) 复合 ...

  8. android实现评论列表_【Android视图效果】分组列表实现吸顶效果

    效果图 效果图 分析 先来分析一下,可以看到这是一个按月份分组的2行图片列表,列表顶部一个悬浮栏,会随着列表滑动而刷新,点击顶部栏,弹出了一个筛选框. 思路 1.列表部分 可以用RecyclerVie ...

  9. android 涂鸦 卡顿,涂鸦框架的优化——解决绘制时的卡顿问题,纵享丝滑

    前言 V5.5: 增加优化绘制的选项,可优化绘制速度和性能,纵享丝滑. boolean optimizeDrawing = true; // 是否优化绘制,建议开启,可优化绘制速度和性能. Doodl ...

最新文章

  1. 动态添加跨行表格_学会这2招,轻松搞定数据透视表动态更新,效率猛增一倍...
  2. 2015: [Usaco2010 Feb]Chocolate Giving
  3. MyBatis 源码分析 - SQL 的执行过程
  4. 分析.cpp文件编译生成的汇编文件里语句的作用
  5. ssm框架逻辑删除mysql_MybatisPlus--CRUD接口及主键增长策略、自动填充、乐观锁更新数据...
  6. 论文浅尝 | 从具有数值边缘属性的知识图谱中学习嵌入
  7. react 怎么获取表格_react学习之js-xlsx导入和导出excel表格
  8. Redis Bitmap 位图
  9. 比豆二机器人好的机器人_扫地机器人和吸尘器哪个好
  10. Python地理数据处理库shapely支持函数总结
  11. JAVA 中 Redis与ehcache对比与使用
  12. {知道力} = {怎么做} + {为什么} 并且 {为什么} {怎么做}
  13. MyCat全局序列之本地文件方式
  14. 论文阅读笔记 | 分类网络——ParNet
  15. 【转载】原生Ajax写法
  16. Android5.0 下拉通知栏快捷开关的添加(必看)
  17. FreeRTOS笔记篇:第七章 -- 资源管理(互斥锁、二进制信号量、死锁)
  18. 【论文翻译】转移学习推断跨异构网络的社会联系
  19. Zotero:如何定制参考文献样式——以《世界经济》中文期刊为例
  20. 钉钉群添加机器人推送消息

热门文章

  1. 在Navicat中执行sql语句
  2. IE阻止文件下载,解决方法
  3. CentOS 7 下 zookeeper ACL 超级管理员使用
  4. 什么项目适合采用网络监控系统
  5. 数据库优化一般思路(个人经验之谈)
  6. 商业合作保密协议 (2)
  7. Typora+PicGo+腾讯云COS图床搭建
  8. java-swing做的客户端聊天软件
  9. 登录页面如何去掉浏览器默认记住密码
  10. 字典的pop()用法