博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
阅读量:6293 次
发布时间:2019-06-22

本文共 1590 字,大约阅读时间需要 5 分钟。

由于是公司项目,不方便作图(自己懒!!!),所以盗用了网上一位兄弟的图,如侵权,立删。 实现效果大概如下(只看头部图片下拉的视差效果):

这位兄弟的博文地址是:

既然这位兄弟已经实现了该功能,我为什么还要另写一篇文章呢? 第一是,因为我笨啊,这兄弟的代码功底很强,我模仿不出他实现的效果(我不是懒,真的)。 第二也是,我项目中没用到NestedScrollView,也没那么多的滑动冲突,所以实现起来相对也就简单些。

实现这个效果主要就是用到了库,该库真的是很良心,不仅实现了很多酷炫的下拉刷新效果,而且写的例子也很到位,上文提到的作者应该也是参考了该库中的微博首页例子,非常感谢作者!

再次感谢以上两位作者!

废话不多说,直接上代码!

实现第一步肯定是引入该库:

//1.1.0 API改动过大,老用户升级需谨慎compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-7'compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-7'//没有使用特殊Header,可以不加这行compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须)复制代码

接着就是写xml布局了,贴一下我的大概布局吧:

// 顶部可拉伸的图片
// 加载库
// 加载的头部
// 里面是 AppBarLayout + CollapsingToolbarLayout 组成的顶部 以及两个 fragment 对应的tab
// ViewPager 中添加两个 fragment
复制代码

再在代码中监听滑动就OK了,代码如下:

private int mOffset = 0; private int mScrollY = 0; refreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener() {    @Override    public void onRefresh(@NonNull RefreshLayout refreshLayout) {        // 做刷新操作    }    @Override    public void onHeaderMoving(RefreshHeader header, boolean isDragging, float percent, int offset, int headerHeight, int maxDragHeight) {        // 下拉后的操作,这里只是做了平移效果`setTranslationY`,当然你可以做很多酷炫的效果        mOffset = offset / 2;        parallax.setTranslationY(mOffset - mScrollY);        toolbar.setAlpha(1 - Math.min(percent, 1));    }});复制代码

OK,收工!

转载于:https://juejin.im/post/5b3370ac6fb9a00e4d53f61e

你可能感兴趣的文章
解密新一代Java JIT编译器Graal
查看>>
从数据中心基础设施的视角来看 Facebook 机器学习的应用
查看>>
座谈会:Apache基金会那些事儿
查看>>
如何在 Kubernetes 中对无状态应用进行分批发布
查看>>
Oracle计划新的移动OpenJDK项目
查看>>
Phantom.js维护者退出,项目的未来成疑
查看>>
Datical为数据库添加持续交付能力
查看>>
当中台遇上DDD,我们该如何设计微服务?
查看>>
2016年云巴产品更新合集
查看>>
央视在世界杯高清直播中占了C位 它是怎么做到的?
查看>>
新书问答:Company-Wide Agility
查看>>
Oracle将关闭Java.net和Kenai.com社区
查看>>
机器人操作系统来到Windows
查看>>
Propel项目改为基于TensorFlow.js
查看>>
Azure正式对外发布容器服务,支持Swarm和Mesos
查看>>
阿里巴巴收购以色列VR公司,大厂死磕VR为哪般?
查看>>
埃隆·马斯克:比特币拥有着“极为出色”的结构,而纸质货币终将消失
查看>>
如何用度量影响敏捷环境
查看>>
Facebook使用机器学习手段来自动优化其系统性能
查看>>
借助Unity AR Foundation构建跨平台AR应用
查看>>