在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:SmoothRefreshLayout开源软件地址:https://gitee.com/dkzwm/SmoothRefreshLayout开源软件介绍:SmoothRefreshLayoutEnglish | 中文一个高效的Android刷新库,理论上支持所有的视图,比官方的SwipeRefreshLayout更强大且使用方便. 特性:
引入添加如下依赖到你的 build.gradle 文件: dependencies { implementation 'me.dkzwm.widget.srl:core:1.7.1.5.androidx' implementation 'me.dkzwm.widget.srl:ext-util:1.7.1.5.androidx' implementation 'me.dkzwm.widget.srl:ext-material:1.7.1.5.androidx' //1.7.1.4.androidx版本的横向扩展有严重BUG,请勿使用 implementation 'me.dkzwm.widget.srl:ext-horizontal:1.7.1.5.androidx' implementation 'me.dkzwm.widget.srl:ext-classics:1.7.1.5.androidx' implementation 'me.dkzwm.widget.srl:ext-two-level:1.7.1.5.androidx' //物理回弹动画扩展实现,自1.7.1.3开始提供 implementation 'me.dkzwm.widget.srl:ext-dynamic-rebound:1.7.1.5.androidx' //android support 最终版本 implementation 'me.dkzwm.widget.srl:core:1.6.6.8' implementation 'me.dkzwm.widget.srl:ext-util:1.6.6.8' implementation 'me.dkzwm.widget.srl:ext-material:1.6.6.8' implementation 'me.dkzwm.widget.srl:ext-horizontal:1.6.6.8' implementation 'me.dkzwm.widget.srl:ext-classics:1.6.6.8' implementation 'me.dkzwm.widget.srl:ext-two-level:1.6.6.8'} 演示程序下载 Demo.apk 更新日志老版本升级务必查看快照使用在Xml中配置<?xml version="1.0" encoding="utf-8"?><me.dkzwm.widget.srl.SmoothRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent"/></me.dkzwm.widget.srl.SmoothRefreshLayout> Java代码配置SmoothRefreshLayout refreshLayout = (SmoothRefreshLayout)findViewById(R.id.smoothRefreshLayout);refreshLayout.setHeaderView(new ClassicHeader(this));refreshLayout.setOnRefreshListener(new RefreshingListenerAdapter() { @Override public void onRefreshing() { mHandler.postDelayed(new Runnable() { @Override public void run() { refreshLayout.refreshComplete(); } }, 4000); }}); 自定义刷新视图接口定义public interface IRefreshView <T extends IIndicator> { byte TYPE_HEADER = 0; byte TYPE_FOOTER = 1; byte STYLE_DEFAULT = 0; byte STYLE_SCALE = 1; byte STYLE_PIN = 2; byte STYLE_FOLLOW_SCALE = 3; byte STYLE_FOLLOW_PIN = 4; byte STYLE_FOLLOW_CENTER = 5; /** * 返回是头部视图还是尾部视图; */ int getType(); /** * 一般情况都是View实现本接口,所以返回this; */ View getView(); /** * 获取视图样式,自1.4.8版本后支持6种样式,STYLE_DEFAULT、STYLE_SCALE、STYLE_PIN、STYLE_FOLLOW_SCALE、STYLE_FOLLOW_PIN、STYLE_FOLLOW_CENTER; */ int getStyle(); /** * 获取视图的自定义高度,当视图样式为STYLE_SCALE和STYLE_FOLLOW_SCALE时,必须返回一个确切且大于0的值,使用横向刷新库时,该属性实际应该返回的是视图的宽度; * 自1.6.1版本开始,如果想要当前视图铺满布局即MATCH_PARENT,那么支持返回ViewGroup.LayoutParams.MATCH_PARENT对应的值即`-1`; */ int getCustomHeight(); /** * 手指离开屏幕; */ void onFingerUp(SmoothRefreshLayout layout, T indicator); /** * 重置视图; */ void onReset(SmoothRefreshLayout layout); /** * 重新配置视图,准备刷新; */ void onRefreshPrepare(SmoothRefreshLayout layout); /** * 开始刷新; */ void onRefreshBegin(SmoothRefreshLayout layout, T indicator); /** * 刷新完成; */ void onRefreshComplete(SmoothRefreshLayout layout,boolean isSuccessful); /** * 当头部或者尾部视图发生位置变化; */ void onRefreshPositionChanged(SmoothRefreshLayout layout, byte status, T indicator); /** * 当头部或者尾部视图仍然处于处理事务中,这时候移动其他刷新视图则会调用该方法; * 在1.4.6版本新加入; */ void onPureScrollPositionChanged(SmoothRefreshLayout layout, byte status, T indicator);} 添加自定义刷新视图
SmoothRefreshLayout.setDefaultCreator(new IRefreshViewCreator() { @Override public IRefreshView<IIndicator> createHeader(SmoothRefreshLayout layout) { ClassicHeader header = new ClassicHeader(layout.getContext()); return header; } @Override public IRefreshView<IIndicator> createFooter(SmoothRefreshLayout layout) { ClassicFooter footer = new ClassicFooter(layout.getContext()); return footer; } });
ClassicHeader header = new ClassicHeader(mRefreshLayout.getContext()); mRefreshLayout.setHeaderView(header); ClassicFooter footer = new ClassicFooter(mRefreshLayout.getContext()); mRefreshLayout.setFooterView(footer);
实现类QQ下拉阻尼效果 mRefreshLayout.setIndicatorOffsetCalculator(new IIndicator.IOffsetCalculator() { @Override public float calculate(@IIndicator.MovingStatus int status, int currentPos, float offset) { if (status == IIndicator.MOVING_HEADER) { if (offset < 0) { //如果希望拖动缩回时类似QQ一样没有阻尼效果,阻尼效果只存在于下拉则可以在此返回offset //如果希望拖动缩回时类似QQ一样有阻尼效果,那么请注释掉这个判断语句 return offset; } return (float) Math.pow(Math.pow(currentPos / 2, 1.28d) + offset, 1 / 1.28d) * 2 - currentPos; } else if (status == IIndicator.MOVING_FOOTER) { if (offset > 0) { //如果希望拖动缩回时类似QQ一样没有阻尼效果,阻尼效果只存在于上拉则可以在此返回offset //如果希望拖动缩回时类似QQ一样有阻尼效果,那么请注释掉这个判断语句 return offset; } return -((float) Math.pow(Math.pow(currentPos / 2, 1.28d) - offset, 1 / 1.28d) * 2 - currentPos); } else { if (offset > 0) { return (float) Math.pow(offset, 1 / 1.28d) * 2; } else if (offset < 0) { return -(float) Math.pow(-offset, 1 / 1.28d) * 2; } else { return offset; } } } }); Xml属性SmoothRefreshLayout 自身配置
TwoLevelSmoothRefreshLayout 自身配置
SmoothRefreshLayout包裹内部其他View支持配置
SmoothRefreshLayout java属性设置方法
SmoothRefreshLayout 回调
SmoothRefreshLayout 其它
TwoLevelSmoothRefreshLayout java属性设置方法
TwoLevelSmoothRefreshLayout 其它
ThanksLicenseMIT LicenseCopyright (c) 2017 dkzwmCopyright (c) 2015 liaohuqiu.netPermission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software isfurnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THESOFTWARE. |
请发表评论