修复#136,修正默认配置下特性情况下AppBarLayout拖动问题。
修复#136,修正参数传递错误。
兼容Android12。
修复#130,转移到Maven Central。
转移仓库到JitPack
修复#121
修复#120, 上一个版本未抽出时间全部测试,导致ext-horizontal出现严重错误,如果没有使用横向扩展支持的可以不用升级,如果使用横向扩展支持的请务必升级本版本。
修复#118, 考虑到很多场景下,使用者可能在视图已从视图树中移除情况下仍触发操作视图,不再手动置空布局管理器。
修复#115,未考虑到触发刷新同步调用结束刷新导致刷新视图无法操作问题。
添加扩展模块ext-dynamic-rebound
, 使用基于物理的动画实现越界回弹,使回弹效果更贴近真实。理论上该扩展模块可直接替换SRL使用,无需修改代码。
在
VRefreshLayoutManager
添加方法setHeaderBackgroundColor
、setFooterBackgroundColor
。
添加方法getLayoutManager
方法。
添加接口OnCalculateBounceCallback
,用以重载计算越界距离和时间函数,不喜欢本库自带越界回弹效果的话,可使用该接口实现自己的越界计算函数,配合setMinOverScrollDuration
、setMaxOverScrollDuration
、setFlingBackDuration
、setSpringInterpolator
、setSpringBackInterpolator
可以实现几乎所有的越界回弹效果。
添加方法setOnCalculateBounceCallback
。
添加方法setFlingBackDuration
。
修改
ViewCatcherUtil
类实现, 完善CoordinatorLayout
各种布局下的适配性。
修改只在纵向模式下才动态搜索AppBarLayout
。
重构布局相关代码,封装出
LayoutManager
,已实现默认刷新布局管理器和拉伸布局管理器,支持自定义布局管理器以实现不同需求下的效果。
修改RefreshCompleteHook
类的onHookComplete
方法定义,添加immediatelyNoScrolling
参数,用以标记是否需要立刻回置到起始位置。
删除方法getDurationToCloseHeader
、getDurationToCloseFooter
,该方法原来在MaterialHeader
中有使用,修改实现后已不再需要故删除。
修改AutoRefreshUtil
类实现。
删除接口OnNestedScrollChangedListener
,以及相关方法,起初添加该方法是为了实现自动刷新工具检测内部滚动事件用,实际使用中发现和OnUIPositionChangedListener
接口有较多重合,效率偏低同时由于修改了自动刷新工具已不再需要该接口故而删除。
删除方法setEnableSmoothRollbackWhenCompleted
、isEnabledSmoothRollbackWhenCompleted
,改为默认开启,原因为刷新或者加载更多完成后,添加数据会导致视图边界变动,如果此时处于触摸中,之前的逻辑是直接让刷新视图回置到起始位置,但会引起和未处于触摸中的回滚起始位置动画体验不一致的感觉,故而统一为刷新完成不管是否触摸中一律不能中断刷新完成回滚动画让刷新视图回滚到起始位置,保持体验一致。
删除方法setEnableNextPtrAtOnce
、isEnabledNextPtrAtOnce
,由于上一点配置后导致本配置失效故而删除。
添加方法forceRefresh
、forceLoadMore
,将直接忽略内部状态强制进行刷新,该方法不会触发滚动相关逻辑,只是修改内部状态为刷新态。可用来支撑点击进行重新刷新/加载功能。
删除方法setHeaderBackgroundColor
、setFooterBackgroundColor
,封装布局管理器后,背景色填充改为用户在刷新视图层实现。
修改支持
NestedScrollingParent3
、NestedScrollingChild3
,此版本开始不再更新android.support
对应包,只更新androidx
包。
移动SRReflectUtil
到util
包下,core
包不再包含兼容低版本的反射代码,如需使用请自行继承SmoothRefreshLayout
重写相应函数自行调用SRReflectUtil
对应方法进行使用。
重命名OnLoadMoreScrollCallback
接口为OnSyncScrollCallback
,同时实现滚动到顶自动刷新的同步滚动逻辑。
删除方法setEnableDynamicEnsureTargetView
和isEnabledDynamicEnsureTargetView
,改为默认就是动态识别滚动内容视图,不再可配置,如果需要指定滚动内容视图请使用setScrollTargetView
。
删除方法setEnableCheckInsideAnotherDirectionView
和isEnableCheckInsideAnotherDirectionView
,考虑到已动态识别滚动视图,不再浪费效率判断手指按下时是否处于其他方向View中。
删除回调类OnInsideAnotherDirectionViewCallback
以及其设置方法setOnInsideAnotherDirectionViewCallback
,原因同上。 删除方法setLoadingMinTime
, 没什么用,改由用户控制最小加载时间。
删除方法mapTheInverseMatrix
,使用隐藏的Android 5.1
以上系统版本的访问浅灰名单级方法transformPointToViewLocal
进行处理,针对Android 5.1
以下没有该方法的情况做了兼容处理。
优化动态搜索AppBarLayout
逻辑,避免无法识别外层嵌套。
调整优化刷新视图自定样式效率,在
STYLE_SCALE
/STYLE_FOLLOW_SCALE
/STYLE_FOLLOW_CENTER
下不再使用requestLayout
进行重布局,考虑到SRL高度固定情况下,直接在内部进行计算,大幅提高布局的效率。
修复#95,感谢@tbxyxs 的反馈。
移除无用attr。
添加自动二级刷新功能。
修改嵌套滚动Fling消耗问题,感谢@dnwalter 的反馈,后续准备实现NestedScrollingParent3和NestedScrollingChild3接口,提高嵌套滚动下的Fling顺滑度。
修复横向刷新,当内部视图为ViewPager时,Fling传递问题。感谢@renzhenfei 的反馈。
优化触摸事件处理。
修复当SRL高度为自适应同时内部视图高度也为自适应时高度计算有误的问题。感谢@Lalways 的反馈。
修改AppBarUtil实现。
修复
setEnableNoMoreData
功能异常。感谢@seemelala 的反馈。
修复由于实现
NestedScrollingChild2
和NestedScrollingParent2
接口所带来的Fling嵌套滚动传递未正常终结引起的短暂点击失效问题。感谢@dahai2070 的反馈。
删除
ViscousFluidInterpolator
。
整合ext-util
包的QuickConfigAppBarUtil
到core
包中,并重命名为AppBarUtil,内置自动适配逻辑以适应越来越流行的嵌套特性。
重命名类:ext-util
包中的QuickConfigAutoRefreshUtil
为AutoRefreshUtil
。
优化布局逻辑,提高效率。
默认插值器修改。
删除状态布局功能。
添加方法:setEnableDynamicEnsureTargetView
方法即动态搜索布局功能,开启后理论上不需要手动指定边界判断视图就能适配某些特殊场景,例如:ViewPager共用一个刷新控件。
修改接口:IRefreshViewCreator
的方法返回参数,避免漏设刷新视图。
添加接口:OnPerformAutoRefreshCallBack
和对应的设置方法:setOnPerformAutoRefreshCallBack
。
修复isEnabledNoSpringBackWhenNoMoreData
第二次不起作用的问题。
添加接口:OnNestedScrollChangedListener
和对应的设置方法:addOnNestedScrollChangedListener
和removeOnNestedScrollChangedListener
。用以当本视图以及内部的自视图发生滚动时触发监听。
添加接口:OnStatusChangedListener
用以监听状态改变。
添加方法:addOnStatusChangedListener
和removeOnStatusChangedListener
,用以监听状态改变。
删除方法:equalsOnHookHeaderRefreshCompleteCallback
、equalsOnHookFooterRefreshCompleteCallback
、setOverScrollInterpolator
。
扩展实现:NestedScrollingChild2
、NestedScrollingParent2
接口,因而Android Support Library
版本必须大于26.1.0
,以完善Fling。
添加方法:isEnabledPerformFreshWhenFling
和setEnablePerformFreshWhenFling
, 默认情况下当正在拖动刷新视图时,如果是向收回刷新视图方向甩动并触发了惯性甩动(Fling),即使松手时的高度大于等于触发刷新高度仍然不会触发刷新,这个时候如果想触发刷新则需要打开本开关。
删除部分反射逻辑,应对Android P。
综合考虑性能和逻辑复杂度后删除了通过ViewTreeObserver
来监听滚动逻辑,改用重载computeScroll
方法,理论上效率会轻微降低,但复杂度会降低不少。
添加方法:isEnabledOldTouchHandling
和setEnableOldTouchHandling
方法,至此版本开始,支持2种触摸处理方式,一种为老版本的拦截处理(触摸事件只且当刷新视图收回后才由内容视图向下传递),一种为新版本的透传处理(触摸事件将从触发到终止均向下传递,传递时剔除消耗部分,特殊场景下做差值处理)。老版本的处理逻辑由于是拦截传递,必然导致视觉上的割裂感,主要体现在拉出刷新视图再收回视图情况下,当刷新视图回到顶部后缓慢滑动会导致内容视图触发按下效果。新版本由于是差值透传所以不会产生这个问题。使用者可按需进行切换调整。默认使用新版本的处理逻辑。
修改实现: 考虑到越界回弹是iOS和macOS特有,实现上参考iOS的越界回弹效果,重新实现了越界回弹的逻辑,尽量接近iOS和macOS上的效果。
添加方法:setSpringBackInterpolator
, 设置回滚时的滚动插值器,setSpringInterpolator
, 意思为设置滑出时的滚动插值器。
添加方法:getScrollMode
, 用以获取当前滚动的模式,有6个模式,SCROLLER_MODE_NONE
未滚动、SCROLLER_MODE_PRE_FLING
缩回或者拉出刷新视图手势下的滚动模式、SCROLLER_MODE_CALC_FLING
内容视图滚动中计算加速度模式 、SCROLLER_MODE_FLING
越界回弹弹出滚动模式、SCROLLER_MODE_FLING_BACK
越界回弹缩回滚动模式、SCROLLER_MODE_SPRING
主动弹出滚动模式、SCROLLER_MODE_SPRING_BACK
释放缩回滚动模式。
修改方法:setLifecycleObserver
为addLifecycleObserver
。
添加方法:removeLifecycleObserver
。
添加方法:getIndicator
。
删除方法:isInStartPosition
。
完善部分代码逻辑。
调整越界回弹弹出的最小时间值为100
。
迁移仓库,由JitPack迁移到JCenter(太蠢了,手残删除了2个包的厂库,导致2个包的引用名有修改)。
修复部分代码逻辑错误。
修复
MODE_SCALE
模式下的拉伸BUG。
修正
MODE_SCALE
模式下仍能调用自动刷新的问题。
修正Fling动作某些情况下的BUG。
优化Fling在开启OverScroll情况下的逻辑。
修复横向刷新错误设置偏移的问题。
优化MODE_SCALE
模式下部分场景,如果内部视图为ScrollView或者NestedScrollView或者HoriztonalScrollView,拉伸对象将为内部视图内的第一个视图,以达到更好的效果。
减少反射逻辑。
新增方法:setAutomaticSpringInterpolator
,用来设置自动刷新时的滚动插值器。
删除方法:
setEnableHideHeaderView
,改用getHeaderView().getView().setVisibility
进行替代。
删除方法:setEnableHideFooterView
,改用getFooterView().getView().setVisibility
进行替代。
删除方法:isEnabledHideHeaderView
,改用getHeaderView().getView().getVisibility
进行替代。
删除方法:isEnabledHideFooterView
,改用getFooterView().getView().getVisibility
进行替代。
新增方法:getFooterView
。
新增方法:getHeaderView
。
删除方法:getDefaultHeader
(位于MaterialSmoothRefreshLayout
和ClassicSmoothRefreshLayout
)。
删除方法:getDefaultFooter
(位于MaterialSmoothRefreshLayout
和ClassicSmoothRefreshLayout
)。
删除类:OverScrollerChecker
,合并滚动逻辑到ScrollerChecker
类中,对滚动逻辑进行整合。
修改方法:setLoadMoreScrollTargetView
->setScrollTargetView
。
修改方法:getLoadMoreScrollTargetView
->getScrollTargetView
。
修改Xml属性sr_content
实现,支持遍历查找内部所有层级的资源Id。
合并整合横向刷新和纵向刷新触摸事件逻辑。
优化部分代码逻辑。
修正部分参数设置错误。
分割合并部分代码逻辑。
拆分IIndicator
为IIndicator
和IIndicatorSetter
2个接口,避免非Frame层调用相关setter方法。
删除部分代码逻辑。
删除多余部分方法(PS:Fuck JitPack).
重命名Xml属性和部分开放API,使Xml属性命名更规范,同时尽量避免过长API名导致的代码冗余.
修改Xml属性名:style_follow_scale
->style_followScale
.
修改Xml属性名:style_follow_pin
->style_followPin
.
修改Xml属性名:style_follow_center
->style_followCenter
.
修改Xml属性名:sr_resistance_of_footer
->sr_resistanceOfFooter
.
修改Xml属性名:sr_resistance_of_header
->sr_resistanceOfHeader
.
修改Xml属性名:sr_ratio_of_refresh_height_to_refresh
->sr_ratioToRefresh
.
修改Xml属性名:sr_ratio_of_header_height_to_refresh
->sr_ratioOfHeaderToRefresh
.
修改Xml属性名:sr_ratio_of_footer_height_to_refresh
->sr_ratioOfFooterToRefresh
.
修改Xml属性名:sr_offset_ratio_to_keep_refresh_while_Loading
->sr_ratioToKeep
.
修改Xml属性名:sr_offset_ratio_to_keep_header_while_Loading
->sr_ratioToKeepHeader
.
修改Xml属性名:sr_offset_ratio_to_keep_footer_while_Loading
->sr_ratioToKeepFooter
.
修改Xml属性名:sr_can_move_the_max_ratio_of_refresh_height
->sr_maxMoveRatio
.
修改Xml属性名:sr_can_move_the_max_ratio_of_header_height
->sr_maxMoveRatioOfHeader
.
修改Xml属性名:sr_can_move_the_max_ratio_of_footer_height
->sr_maxMoveRatioOfFooter
.
修改Xml属性名:sr_duration_to_close_of_refresh
->sr_closeDuration
.
修改Xml属性名:sr_duration_to_close_of_header
->sr_closeHeaderDuration
.
修改Xml属性名:sr_duration_to_close_of_footer
->sr_closeFooterDuration
.
修改Xml属性名:sr_duration_of_back_to_keep_refresh_pos
->sr_backToKeepDuration
.
修改Xml属性名:sr_duration_of_back_to_keep_header_pos
->sr_backToKeepHeaderDuration
.
修改Xml属性名:sr_duration_of_back_to_keep_footer_pos
->sr_backToKeepFooterDuration
.
修改Xml属性名:sr_enable_pull_to_refresh
->sr_enablePullToRefresh
.
修改Xml属性名:sr_enable_over_scroll
->sr_enableOverScroll
.
修改Xml属性名:sr_enable_keep_refresh_view
->sr_enableKeep
.
修改Xml属性名:sr_enable_pin_content
->sr_enablePinContent
.
修改Xml属性名:sr_enable_refresh
->sr_enableRefresh
.
修改Xml属性名:sr_enable_load_more
->sr_enableLoadMore
.
修改Xml属性名:sr_empty_layout
->sr_emptyLayout
.
修改Xml属性名:sr_error_layout
->sr_errorLayout
.
修改Xml属性名:sr_custom_layout
->sr_customLayout
.
修改Xml属性名:sr_header_background_color
->sr_headerBackgroundColor
.
修改Xml属性名:sr_footer_background_color
->sr_footerBackgroundColor
.
修改Xml属性名:sr_enable_two_level_refresh
->sr_enableTwoLevelRefresh
.
支持黏贴头部,添加对应Xml属性:sr_stickyHeader
和对应的方法setStickyHeaderResId
用以设置黏贴头部的ResId,当SRL处于移动头部视图时该黏贴头部会跟随Target视图进行移动.
添加Xml属性:sr_backToKeep2Duration
用以设置回滚到保持二级刷新头部处于二级刷新过程中的时长.
添加Xml属性:sr_closeHeader2Duration
用以设置关闭二级刷新头部的时长.
修改方法:setRatioOfRefreshViewHeightToRefresh
->setRatioToRefresh
.
修改方法:setRatioOfHeaderHeightToRefresh
->setRatioOfHeaderToRefresh
.
修改方法:setRatioOfFooterHeightToRefresh
->setRatioOfFooterToRefresh
.
修改方法:setOffsetRatioToKeepRefreshViewWhileLoading
->setRatioToKeep
.
修改方法:setOffsetRatioToKeepHeaderWhileLoading
->setRatioToKeepHeader
.
修改方法:setOffsetRatioToKeepFooterWhileLoading
->setRatioToKeepFooter
.
修改方法:setDurationOfBackToKeepRefreshViewPosition
->setDurationOfBackToKeep
.
修改方法:getDurationOfBackToKeepHeaderPosition
->getDurationOfBackToKeepHeader
.
修改方法:setDurationOfBackToKeepHeaderPosition
->setDurationOfBackToKeepHeader
.
修改方法:getDurationOfBackToKeepFooterPosition
->getDurationOfBackToKeepFooter
.
修改方法:setDurationOfBackToKeepFooterPosition
->setDurationOfBackToKeepFooter
.
修改方法:setCanMoveTheMaxRatioOfRefreshViewHeight
->setMaxMoveRatio
.
修改方法:setCanMoveTheMaxRatioOfHeaderHeight
->setMaxMoveRatioOfHeader
.
修改方法:setCanMoveTheMaxRatioOfFooterHeight
->setMaxMoveRatioOfFooter
.
修改方法:isEnableCheckFingerInsideAnotherDirectionView
->isEnableCheckInsideAnotherDirectionView
.
修改方法:setEnableCheckFingerInsideAnotherDirectionView
->setEnableCheckInsideAnotherDirectionView
.
修改方法:isEnabledLoadMoreNoMoreData
->isEnabledNoMoreData
.
修改方法:setEnableLoadMoreNoMoreData
->setEnableNoMoreData
.
修改方法:isEnabledLoadMoreNoMoreDataNoNeedSpringBack
->isEnabledNoSpringBackWhenNoMoreData
.
修改方法:setEnableLoadMoreNoMoreDataNoNeedSpringBack
->setEnableNoSpringBackWhenNoMoreData
.
修改方法:isEnabledCanNotInterruptScrollWhenRefreshCompleted
->isEnabledSmoothRollbackWhenCompleted
.
修改方法:setEnableCanNotInterruptScrollWhenRefreshCompleted
->setEnableSmoothRollbackWhenCompleted
.
修改方法:isEnabledScrollToBottomAutoLoadMore
->isEnabledAutoLoadMore
.
修改方法:setEnableScrollToBottomAutoLoadMore
->setEnableAutoLoadMore
.
修改方法:isEnabledScrollToTopAutoRefresh
->isEnabledAutoRefresh
.
修改方法:setEnableScrollToTopAutoRefresh
->setEnableAutoRefresh
.
修改方法:setDurationOfBackToKeepTwoLevelHeaderViewPosition
->setDurationOfBackToKeepTwoLevel
.
修改方法:setDurationToCloseTwoLevelHeader
->setDurationToCloseTwoLevel
.
修改方法:setRatioOfHeaderHeightToHintTwoLevelRefresh
->setRatioOfHeaderToHintTwoLevel
.
修改方法:setRatioOfHeaderHeightToTwoLevelRefresh
->setRatioOfHeaderToTwoLevel
.
修改方法:setOffsetRatioToKeepTwoLevelHeaderWhileLoading
->setRatioToKeepTwoLevelHeader
.
修改方法:setOnChildNotYetInEdgeCannotMoveHeaderCallBack
->setOnHeaderEdgeDetectCallBack
.
修改方法:setOnChildNotYetInEdgeCannotMoveFooterCallBack
->setOnFooterEdgeDetectCallBack
.
修改方法:setOnFingerInsideAnotherDirectionViewCallback
->setOnInsideAnotherDirectionViewCallback
.
重命名接口:OnChildNotYetInEdgeCannotMoveHeaderCallBack
->OnHeaderEdgeDetectCallBack
.
重命名接口:OnChildNotYetInEdgeCannotMoveFooterCallBack
->OnFooterEdgeDetectCallBack
.
重命名接口:OnFingerInsideAnotherDirectionViewCallback
->OnInsideAnotherDirectionViewCallback
.
支持拉伸内部视图功能,
Mode
为MODE_DEFAULT
时为刷新控件用以操作Header/Footer,Mode
为MODE_SCALE
时为拉伸收缩控件用以操作内部视图(PS:竖向靠SmoothRefreshLayout支持/横向开HorizontalSmoothRefreshLayout支持,效果类似小米设置页拉伸效果).
添加了sr_mode
、mode_default
、mode_scale
Xml属性.
将外部可配置的常量和注解整合.
支持只触发刷新动画.
修复
setErrorLayoutResId
方法移除了错误的视图问题.
重命名setEnabledCanNotInterruptScrollWhenRefreshCompleted
为setEnableCanNotInterruptScrollWhenRefreshCompleted
方法.
重命名setEnabledInterceptEventWhileLoading
为setEnableInterceptEventWhileLoading
方法.
添加setDisableLoadMoreWhenContentNotFull
和isDisabledLoadMoreWhenContentNotFull
方法,用以控制当内容视图未满屏时禁用加载更多.
修复Attr冲突问题.
添加自动刷新辅助工具到ext-utils
包.
添加了setEmptyLayoutResId
和setErrorLayoutResId
和setCustomLayoutResId
方法.
添加了OnFingerDownListener
接口.
修改内部实现,如果TargetView为空将不再抛出异常.
修改当刷新完成时,回滚动作是否能被触摸事件打断的逻辑为触发刷新完成(1.6.1.1条件为真实刷新完成才触发逻辑即:内部状态更改为刷新完成触发).
新增ILifecycleObserver
接口,用以观察视图生命周期,为后续可能的工具预留接口.
新增ext-utils
包,现阶段添加了快速适配AppBarLayout
的工具(QuickConfigAppBarUtil
),如视图为CoordinatorLayout
+AppBarLayout
+RecyclerView、AbsListView、ScrollView
这类视图结构,现在只需使用本工具,配置少量代码即可完成配置.
添加
isEnabledCanNotInterruptScrollWhenRefreshCompleted
和setEnabledCanNotInterruptScrollWhenRefreshCompleted
方法,用以控制当刷新完成时,回滚动作是否能被触摸事件打断.
修复Fling的BUG.
修改
IRefreshView
接口定义,当getCustomHeight
方法返回值大于0时,Srl会以该值作为视图的高度进行后续操作.当值等于-1(MATCH_PARENT)时,Srl会将视图铺满布局.当值等于0时候不做处理以布局自适应.
修改IRefreshView
接口,统一indicator
参数均为继承IIndicator
的泛型T
.
删除addView
相关的final关键字,修改相关实现.
修改StoreHouseHeader
的绘图问题.
优化手势传递,使甩动手势更自然.
修复刷新视图有Margin时,未正确布局的问题.
修复当刷新视图样式不为STYLE_DEFAULT
和STYLE_FOLLOW_CENTER
,并且当前的移动距离大于Srl的高度时仍改变移动距离的问题.
对现有项目进行分割,考虑到绝大多数都是自定义Header和Footer故拆分Core自带的2种风格Header和Footer到2个包(ext-classic和ext-material),至此Core包不再包含Header和Footer.如果需要可自行依赖.
修改手势传递实现,使效果更自然.
删除ext-horizontal
包中的HorizontalMaterialHeader
和HorizontalMaterialFooter
,将其移动到了demo中.
添加了flingCompat
方法,用以向下传递Fling动作.
删除setOverScrollDurationRatio
方法.
修改越界回弹实现,优化效果.
修改关闭Header和关闭Footer刷新功能实现,关闭时会检查是否处于刷新中,如果处于刷新中会重置默认状态.
修改ClassicHeader
和ClassicFooter
实现,不再使用XML布局构建,直接使用代码生成布局结构,整合共有属性.
修改从Window移除时不再移除Handler内的所有消息.
修复嵌套布局下手势失效问题.
支持刷新视图可见情况下,手势向下传递.即当刷新视图高度未达到触发刷新高度时,手势能将刷新视图隐藏的同时继续传递手势到内容视图.
修复未开启越界回弹情况下,手势甩动关闭刷新视图不起作用问题.
修复多层嵌套下和多方向布局下事件处理可能的异常.
修复嵌套滚动下可能存在的加载更多同步滚动被错误触发问题.
添加setEnableCompatLoadMoreScroll
方法,用以设置是否开启加载更多同步滚动,默认开启.
添加getHeaderBackgroundColor
方法,用以获取Header刷新高度区域内的背景色.
添加setHeaderBackgroundColor
方法,用以设置Header刷新高度区域内的背景色.
添加sr_header_background_color
属性,用以设置Header刷新高度区域内的背景色.
添加getFooterBackgroundColor
方法,用以获取Footer刷新高度区域内的背景色.
添加setFooterBackgroundColor
方法,用以设置Footer刷新高度区域内的背景色.
添加sr_footer_background_color
属性,用以设置Footer刷新高度区域内的背景色.
修改方法setOnChildAlreadyInEdgeCanMoveHeaderCallBack
为setOnChildNotYetInEdgeCannotMoveHeaderCallBack
,保持含义和作用都对应原setOnChildScrollUpCallback
方法.
修改方法setOnChildAlreadyInEdgeCanMoveFooterCallBack
为setOnChildNotYetInEdgeCannotMoveFooterCallBack
,保持含义和作用都对应原setOnChildScrollDownCallback
方法.
修改接口OnChildAlreadyInEdgeCanMoveHeaderCallBack
为OnChildNotYetInEdgeCannotMoveHeaderCallBack
,保持含义和作用都对应原OnChildScrollUpCallback
接口.
修改接口OnChildAlreadyInEdgeCanMoveFooterCallBack
为OnChildNotYetInEdgeCannotMoveFooterCallBack
,保持含义和作用都对应原OnChildScrollDownCallback
接口.
修改方法isChildAlreadyInEdgeCanMoveHeader
为isChildNotYetInEdgeCannotMoveHeader
,保持含义和作用都对应原canChildScrollUp
方法.
修改方法isChildAlreadyInEdgeCanMoveFooter
为isChildNotYetInEdgeCannotMoveFooter
,保持含义和作用都对应原canChildScrollDown
方法.
修复布局Footer时错误的检查了Header的样式.
优化移动刷新视图在STYLE_FOLLOW_PIN
样式下的效率.
对现有项目进行分割,将二极刷新功能模块放入专门的包(ext-two-level),新添加支持横向刷新模块(ext-horizontal),原有核心模块作为基础模块引入(core).从而削减了库的大小.使用者可以根据具体业务需求依赖扩展模块.
修改方法canChildScrollUp
为isChildAlreadyInEdgeCanMoveHeader
.
修改方法canChildScrollDown
为isChildAlreadyInEdgeCanMoveFooter
.
修改方法setOnChildScrollUpCallback
为setOnChildAlreadyInEdgeCanMoveHeaderCallBack
.
修改方法setOnChildScrollDownCallback
为setOnChildAlreadyInEdgeCanMoveFooterCallBack
.
修改接口OnChildScrollUpCallback
为OnChildAlreadyInEdgeCanMoveHeaderCallBack
.
修改接口OnChildScrollDownCallback
为OnChildAlreadyInEdgeCanMoveFooterCallBack
.
修改接口OnFingerInsideHorViewCallback
为OnFingerInsideAnotherDirectionViewCallback
.
修改方法setOnFingerInsideHorViewCallback
为setOnFingerInsideAnotherDirectionViewCallback
.
修改方法isEnableCheckFingerInsideHorView
为isEnableCheckFingerInsideAnotherDirectionView
.
修改方法setEnableCheckFingerInsideHorView
为setEnableCheckFingerInsideAnotherDirectionView
.
修改方法isDisabledWhenHorizontalMove
为isDisabledWhenAnotherDirectionMove
.
修改方法setDisableWhenHorizontalMove
为setDisableWhenAnotherDirectionMove
.
修改方法checkHorizontalViewUnInterceptedEvent
为checkAnotherDirectionViewUnInterceptedEvent
.
修改方法updateYPos
为updatePos
.
修改方法updateXPos
为updateAnotherDirectionPos
.
添加方法createIndicator
. 添加方法setIndicatorOffsetCalculator
,用以设置自定义便宜计算器实现更强的阻尼效果.
添加方法isEnabledLoadMoreNoMoreDataNoNeedSpringBack
.
添加方法setEnableLoadMoreNoMoreDataNoNeedSpringBack
,用以开启当无再多数据时是否不再回弹停留在最后移动位置.
修改IIndicator
接口中的方法getOffsetY
为getOffset
.
修改IIndicator
接口中的方法getLastPosY
为getLastPos
.
修改IIndicator
接口中的方法getCurrentPosY
为getCurrentPos
.
修改IIndicator
接口中的方法setCurrentPosY
为setCurrentPos
.
修改IIndicator
接口中的添加setOffsetCalculator(IOffsetCalculator calculator)
方法.
修改IIndicator
接口中的添加IOffsetCalculator
接口,用以设置自定义便宜计算器实现更强的阻尼效果.
其他内部参数名的修改.
修正参数错误.分包前的最后一个版本.
修改
IRefreshView
接口,新增STYLE_PIN
、STYLE_FOLLOW_SCALE
、STYLE_FOLLOW_PIN
、STYLE_FOLLOW_CENTER
四种新的样式.
STYLE_PIN
:如果是Header则会固定在顶部,如果是Footer则会固定在底部.
STYLE_FOLLOW_SCALE
:先纵向跟随TargetView移动,当移动的位置大于视图高度就动态改变视图高度.
STYLE_FOLLOW_PIN
:先纵向跟随TargetView移动,当移动的位置大于视图高度就固定住.
STYLE_FOLLOW_CENTER
:先纵向跟随TargetView移动,当移动的位置大于视图高度就让刷新视图处于中间位置但不改变视图大小.
修改setEnableHeaderDrawerStyle
和setEnableFooterDrawerStyle
的实现.新版本需要之前的版本效果需要改变刷新视图的样式为STYLE_PIN
.
添加IChangeStateAnimatorCreator
接口和setChangeStateAnimatorCreator
方法.现在可以自定义切换状态动画.
修复DefaultIndicator
中的参数错误.
强化对同时有横向和纵向滚动视图时的滑动处理.
将WaveHeader
和WaveSmoothRefreshLayout
从Lib中移除,移动到App中.
精简了部分代码.
修复setEnableOverScroll功能部分失效问题, #25.
修复RecyclerView未满屏幕情况下Footer滑动问题, #25.
修改二级刷新,添加
autoTwoLevelRefreshHint(boolean smoothScroll, int stayDuration, boolean canBeInterrupted)
方法,可以设置提示是否能被打断.
修复某些嵌套布局下触摸事件处理没有非常好的工作问题.
修改二级刷新,修复
IIndicator
转换错误.
删除支援Margin特性,提高效率.
修复某些嵌套布局下触摸事件处理没有非常好的工作问题.
重命名了一些内部方法名.
修复嵌套布局下,Fling处理逻辑问题导致惯性消失问题.
添加setOnFingerInsideHorViewCallback
方法.
添加setEnableCheckFingerInsideHorView
方法.
添加isEnableCheckFingerInsideHorView
方法.
添加OnFingerInsideHorViewCallback
回调接口.
以上添加的方法和接口用于检测手指按下时,触摸点是否位于水平滚动视图内.开启setDisableWhenHorizontalMove
和setEnableCheckFingerInsideHorView
后,将根据手指按下的触摸点是否位于水平滚动视图内进行触摸事件拦截处理,如果在内部,就拦截横向滑动,如果不在就拦截处理所有滑动事件.
实现即使Header或者Footer中的事务还没完成(例如Header处于刷新中),仍然可以滑动其他刷新视图.原逻辑为如果Header处于刷新中就无法再拉起Footer.
在IRefreshView
接口中添加onPureScrollPositionChanged
方法,用于当刷新视图事务未完成,移动其它视图会回调该方法,可以根据具体需求实现该状态下的视图展现.
优化优化回弹效果.
修复某些特殊情况下触摸事件没有很好的处理问题.
合并部分重复逻辑代码.
添加setSpringInterpolator
方法,用以设置默认的滚动插值器.
添加setOverScrollInterpolator
方法,用以设置越界回弹时的滚动插值器.
修改二级刷新,修改
TwoLevelSmoothRefreshLayout
styleablesr_enable_two_level_pull_to_refresh
为sr_enable_two_level_refresh
.
修改二级刷新,删除isEnabledTwoLevelPullToRefresh
方法,添加isDisabledTwoLevelRefresh
方法.
修改二级刷新,删除setEnableTwoLevelPullToRefresh
方法,添加isDisabledTwoLevelRefresh
方法.
修改二级刷新,修复setDurationOfBackToKeepTwoLeveHeaderViewPosition
方法名,应为setDurationOfBackToKeepTwoLevelHeaderViewPosition
.
修改二级刷新,添加autoTwoLevelRefreshHint
相关方法.
修复WaveTextRefreshView
中动画显示错位问题(7.0系统BUG);
修复部分逻辑错误.
修改
onNestedPreScroll
方法实现,合并逻辑,提高效率和可读性.
修改onNestedPreFling
方法实现,提高效率.
优化优化回弹效果.
修复某些情况下ViewTreeObserver
的OnScrollChangedListener
没有完全移除问题.
修改MaterialSmoothRefreshLayout
限制Header最大移动距离为1.5倍.
删除setOverScrollDistanceRatio
方法和mOverScrollDistanceRatio
属性.
添加setMinOverScrollDuration
方法.
修复某些特殊情况下,越界回弹未正常终止问题.
删除RefreshCompleteHook中的弱引用,避免某些特殊情况下,引用被回收导致RefreshLayout内部状态异常问题.
修改越界回弹实现,优化回弹效果.
修复移动视图过程中触发刷新刷新逻辑问题(PS:2个判断都少写了括号).
修复偶尔WaveHeader
圆环刷新时坐标异常问题.
添加setOverScrollDurationRatio
方法,用于设置回弹时长比例.
添加setMaxOverScrollDuration
方法,用于设置最大回弹时长.
添加isEnabledScrollToTopAutoRefresh
方法.
添加setEnableScrollToTopAutoRefresh
方法.用于开启到顶自动刷新.
修复加载更多无更多数据没有正确设置问题(PS:即MASK的值错了,应为0x07<<10
而不是0x05<<10
).
修复若干触摸事件处理BUG.
修复状态视图填充LayoutParams不一致问题.
修改包名为me.dkzwm.widget.srl
,使包名更符合规范.
修改二级刷新,删除setEnableBackToStartPosAtOnce
方法.
修改二级刷新,添加setDurationOfBackToKeepTwoLeveHeaderViewPosition
方法.
修改二级刷新,添加setDurationToCloseTwoLevelHeader
方法.
修改二级刷新,添加setOffsetRatioToKeepTwoLevelHeaderWhileLoading
方法.
修改二级刷新,添加getOffsetToKeepTwoLevelHeaderWhileLoading
方法.
删除SmoothRefreshLayout
styleable中的sr_enable_two_level_pull_to_refresh
属性.
修改二级刷新,添加TwoLevelSmoothRefreshLayout
styleable,并添加sr_enable_two_level_pull_to_refresh
属性.
修改二级刷新,修改ITwoLevelIndicator
继承IIndicator
接口.
修改二级刷新,在ITwoLevelIndicator
中添加setOffsetRatioToKeepTwoLevelHeaderWhileLoading
方法.
修改二级刷新,在ITwoLevelIndicator
中添加getOffsetToKeepTwoLevelHeaderWhileLoading
方法.
修改二级刷新,删除TwoLevelRefreshView
接口参数中的IIndicator
参数.
添加WaveTextRefreshView
,存放于Demo的header中.
更新英语Readme文件.
修复静态刷新视图构造器在某些特定情况下未很好的工作问题.
修复WaveHeader
某些场景设置插值器不对问题.
修复自动刷新可能被打断问题.
删除了MODE属性,功能性和其他属性有重复,导致逻辑复杂度直线上升,去掉后使用其他属性组合替代.
修复未处于刷新状态调用refreshComplete()方法导致内部视图偏移问题.
去掉多余资源,减小包体积.
修改setResistanceOfPullUp
方法为setResistanceOfFooter
,使含义更明确.
修改setResistanceOfPullDown
方法为setResistanceOfHeader
,使含义更明确.
修改Xmlsr_resistance_of_pull_up
属性为sr_resistance_of_footer
,使含义更明确.
修改Xmlsr_resistance_of_pull_down
属性为sr_resistance_of_header
,使含义更明确.
修改setDurationOfBackToRefreshViewHeight
方法为setDurationOfBackToKeepRefreshViewPosition
,使含义更明确.
修改Xmlsr_duration_of_back_to_refresh_height
属性为sr_duration_of_back_to_keep_refresh_pos
,使含义更明确.
修改getDurationOfBackToHeaderHeight
方法为getDurationOfBackToKeepHeaderPosition
,使含义更明确.
修改setDurationOfBackToHeaderHeight
方法为setDurationOfBackToKeepHeaderPosition
,使含义更明确.
修改Xmlsr_duration_of_back_to_header_height
属性为sr_duration_of_back_to_keep_header_pos
,使含义更明确.
修改getDurationOfBackToFooterHeight
方法为getDurationOfBackToKeepFooterPosition
,使含义更明确.
修改setDurationOfBackToFooterHeight
方法为setDurationOfBackToKeepFooterPosition
,使含义更明确.
修改Xmlsr_duration_of_back_to_footer_height
属性为sr_duration_of_back_to_keep_footer_pos
,使含义更明确.
修改Xmlsr_layout_gravity
属性为layout_gravity
.
删除Xmlsr_mode
属性.
添加sr_enable_refresh
属性,设置是否启用下拉刷新.默认启用
添加sr_enable_load_more
属性,设置是否启用加载更多.默认不启用.
添加setEnableHideHeaderView
方法.
添加isEnabledHideHeaderView
方法.
添加isEnabledHideFooterView
方法.
添加setEnableHideFooterView
方法.
原有Mode对应改用如下属性组合替代.NONE
->setDisableRefresh(true)
+setDisableLoadMore(true)
+setEnableOverScroll(false)
;REFRESH
->setDisableRefresh(false)
+setDisableLoadMore(true)
;LOAD_MORE
->setDisableRefresh(true)
+setDisableLoadMore(false)
;OVER_SCROLL
->setDisableRefresh(false)
+setDisableLoadMore(false)
+setDisablePerformRefresh(true)
+setDisablePerformLoadMore(true)
+setEnableHideHeaderView(true)
+setEnableHideFooterView(true)
;BOTH
->setDisableRefresh(false)
+setDisableLoadMore(false)