更多请移步至:我的CSDN博客 apk演示:点击下载 English document:English document
SpringView 是一个提供了上下拖拽的功能组件,能够进行高度自定义,实现各种下拉\上拉动画效果,demo里实现了:仿阿里旅行、仿美团,仿QQ下拉刷红包,仿acfun等,完全兼容源生控件如ListView、RecyclerView、ScrollView、WebView等,使用简单,轻易定制自己风格的拖拽页面
SpringView 单独将头部/尾部独立出来,几乎可以实现任何你想要的效果,只需要继承BaseHeader(或Footer)实现接口
SpringView 能在运行时动态地替换头部/尾部,只需要设置不同的头尾即可:springView.setHeader(MyHeader());
SpringView 支持多点触控,可以两只手连续拖拽,你可以定制一些非常有趣的效果(例如demo5)
SpringView 提供了2种拖拽方式(重叠和跟随),可以动态地切换
SpringView 为不想去自定义头/尾的懒人提供了7种默认的实现(模仿了阿里,腾讯,美团等多种风格)如下,还会继续增加
SpringView 支持和 AppBarLayout 联动
📌新增:
在布局文件中添加SpringView,注意SpringView和ScrollView有同样的限制:只能有一个子元素:
<com.liaoinstan.springview.widget.SpringView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:header="@layout/myheader"
app:footer="@layout/myfooter">
<ListView RecyclerView ScrollView or others
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</com.liaoinstan.springview.widget.SpringView>
当然,你也可以不在布局中设置header\footer,使用代码动态添加:
springView.setHeader(new DefaultHeader(this));
springView.setFooter(new DefaultFooter(this));
如果需要处理的话,只需在代码中添加监听:
springView.setListener(new SpringView.OnFreshListener() {
@Override
public void onRefresh() {
}
@Override
public void onLoadmore() {
}
});
使用 Gradle:
dependencies {
//SpringView核心库 (只包含DefaultHeader/Footer)
implementation 'com.liaoinstan.springview:library:1.7.0'
//以下是各个风格的Header/Footer,选择自己喜欢的引入
implementation 'com.liaoinstan.springview:AcfunHeader:1.7.0' //AcFun风格 (header and footer)
implementation 'com.liaoinstan.springview:AliHeader:1.7.0' //阿里旅行风格 (header and footer)
implementation 'com.liaoinstan.springview:MeituanHeader:1.7.0' //美团风格 (header and footer)
implementation 'com.liaoinstan.springview:RotationHeader:1.7.0' //齿轮机械风格 (header and footer)
implementation 'com.liaoinstan.springview:WeixinHeader:1.7.0' //微信小程序header(只有header)
implementation 'com.liaoinstan.springview:DuHeader:1.7.0' //'毒'App header(只有header)
}
或者 Maven:
<dependency>
<groupId>com.liaoinstan.springview</groupId>
<artifactId>library</artifactId>
<version>1.7.0</version>
<type>pom</type>
</dependency>
- 新增一个仿毒app的header (DuHeader),和一个自动滚动的Footer (AutoFooter)
- 新增SCROLL模式,基于这种模式可以实现滚动到底部自动加载等效果
- Header/Footer现在新增了setType()方法,你可以分别给Header和Footer设置不同的Type
- 修复一些Bug
- 新增了仿新版微信(微信7)小程序效果的header (WeixinHeaderV2)
- SpringView的移动参数(MovePara)不再同时影响Header和Footer了,BaseHeader/Footer新增了getMovePara()接口,你可以分别为header和footer设置不同的移动参数以匹配不同的拖拽手感。(如果你没有实现该接口,SpringView仍然兼容以前的规则)
- 依赖更新到Android X
- 修复几个拖拽粘滞的问题,和callFresh方法回调的问题
- 修复在SpringView内部嵌套布局无法滚动的bug,修复给SpringView设置Give.NONE熟悉时调用callFresh()无法正确回弹的问题。
- 把所有的header和footer单独从SpringView库中分离出来了(除DefaultHeader/Footer),现在可以只选择单独导入自己想要的headers/footers,彻底精简后的SpringView library只有26KB,后期新增的header/footer都将以独立库的形式发布,不再冗余到SpringView核心库里,库链接参见上述[获取SpringView]内容
- 新增setMovePara()方法用于设置拖拽时的阻尼系数,新增了一个WeixinHeader仿微信小程序header,新增新的模式:DRAG(拖拽模式),可以实现类似于SwipeRefreshLayout的交互效果,重新设计了overLap模式的实现方式,更加稳定,弃用了support过时api,优化拖拽流畅性和交互效果细节
- 优化几个体验性问题,新增onFinishFreshAndLoadDelay(int delay),callFreshDelay(int delay)方法,优化和BottomSheetBehavior联用的表现,优化在BottomSheetDialog中使用的表现
- 修复空数据情况下和AppBarLayout联动阻尼的bug,新增setEnableFooter(boolean),setEnableHeader(boolean)禁用或启用header/footer
- 支持和 AppBarLayout 联动,修复滚动冲突的问题
- 修复一些bug
- 修复了内边距的失效的问题
- 新增 setEnable(boolean) 方法,用于禁用/启用SpringView
- 新增 callFresh() 方法, 用于手动调用刷新
- 修复了内置水平滑动控件的事件冲突
- 修复了会多次回调刷新的问题
- 修复点击事件偶尔失效的问题
如果遇到问题或者好的建议,请反馈到我的邮箱:[email protected] 或者在我的博客留言
如果觉得对你有用的话,点一下右上的星星赞一下吧
更多请移步至:我的CSDN博客