Github 传送门: https://github.com/scwang90/SmartRefreshLayout
Demo
下载 APK-Demo: https://github.com/scwang90/SmartRefreshLayout/raw/master/art/app-debug.apk
项目演示
风格演示
框架
如果你看完了效果图,或许框架的意思应该有所了解了~~SmartRefreshLayout对下拉刷新功能进行系统的拆分、组合,主要由四个部分组成:
-
RefreshLayout 下拉的基本功能,包括布局测量、滑动事件处理、参数设定等等
-
RefreshContent 对不同内容的统一封装,包括判断是否可滚动、回弹判断、智能识别
-
RefreshHeader 下拉头部的实现和显示
-
RefreshFooter 上拉底部的实现和显示
下面是UML关系类图
通过SmartRefreshLayout框架,你可以在一个稳定强大的下拉布局中实现自己项目需求的 Header ,不用去关心滑动事件处理,不用关心子控件的回弹和滚动边界,只需关注自己真正的项目需求Header的样子和动画。
特点
这时你会问:网上其他的开源下拉控件一样的可以自定义 Header 和 Footer ,SmartRefreshLayout 和它们比起来有什么优势?
变换方式
-
Translate 平行移动 特点: 最常见,HeaderView高度不会改变,
-
Scale 拉伸形变 特点:在下拉和上弹(HeaderView高度改变)时候,会自动触发OnDraw事件
-
FixedFront 固定在前面 特点:不会上下移动,HeaderView高度不会改变
-
FixedBehind 固定在后面 特点:不会上下移动,HeaderView高度不会改变(类似微信浏览器效果)
-
Screen 全屏幕 特点:固定在前面,尺寸充满整个布局
SmartRefreshLayout 的Header和Footer都有多种变换方式,适应不同风格的 Header 和 Footer,下面是不同变换方式Header的Demo
FixedBehind 固定在后面 和 Scale 拉伸形变
Screen 全屏幕 和 Translate 平行移动
独立事件
Header和Footer 可以独立的处理手指滑动事件来为动画提供操作指令,也可以使用RefreshLayout的核心接口来完成一些不寻常的操作指令。
下面的打砖块 Header中 ,Header可以独立的使用滑动事件来为游戏挡板提供指令,并同时可以调用核心接口来通知RefreshLayout上下滚动列表