Need help with SecondFloorBehavior?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

wuyr
135 Stars 17 Forks Apache License 2.0 12 Commits 2 Opened issues

Description

通过自定义Behavior实现“二楼”效果,兼容所有下拉刷新控件

Services available

!
?

Need anything else?

Contributors list

# 65,045
Java
Kotlin
viewpag...
Shell
12 commits

只需一个Behavior就能实现“二楼”效果,兼容所有下拉刷新控件。

博客详情: https://blog.csdn.net/u011387817/article/details/103317592

使用方式:

添加依赖:

implementation 'com.wuyr:secondfloorbehavior:1.0.4'

APIs:

|Method|Description| |---------|-------------| |enterSecondFloor()|主动进入二楼| |leaveSecondFloor()|主动退出二楼| |getState()|获取当前状态:
STATE_NORMAL: 普通状态
STATE_DRAGGING: 拖动中
STATE_PREPARED: 符合触发进入二楼的条件
STATE_OPENING: 正在进入二楼
STATE_OPENED: 在二楼
STATE_CLOSING: 正在离开二楼| |setStartInterceptDistance(float distance)|设置开始拦截下拉的滑动距离
即:列表滑动到顶后,往下拉多长距离可以开始触发二楼的下拉?| |setMinTriggerDistance(float distance)|设置能够进入二楼的滑动距离(从触发上面的二楼下拉后开始计算)
即:拦截下拉后,至少还要继续往下滑动多长距离才能够触发进入二楼?| |setDampingRatio(float ratio)|设置触发下拉后的滑动距离衰减率
取值范围: 0~1,0: 无衰减| |setRollbackDuration(long duration)|设置回退的动画时长 (默认: 200)
回退:即未能触发打开二楼| |setEnterDuration(long duration)|设置进入二楼的动画时长 (默认: 500)| |setExitDuration(long duration)|设置退出二楼的动画时长 (默认: 400)| |setOnBeforeEnterSecondFloorListener(Listener listener)|监听进入二楼之前的事件
在这里可以决定是否同意本次进入二楼,返回:
true: 允许进入
false: 拒绝进入| |setOnEnterSecondFloorListener(Listener listener)|监听打开二楼的事件| |setOnExitSecondFloorListener(Listener listener)|监听退出二楼的事件| |setOnStateChangeListener(Listener listener)|监听各种状态变化,状态见上:getState()| |setExitAnimationInterpolator(Interpolator interpolator)|设置退出二楼的动画插值器| |setEnterAnimationInterpolator(Interpolator interpolator)|设置进入二楼的动画插值器|

Attributes:

|Name|Format|Description| |----|-----|-----------| |layoutstartInterceptDistance|dimension
默认: HeaderView的高度|开始拦截下拉的滑动距离| |layout
minTriggerOffset|dimension
默认: HeaderView高度的一半|能够进入二楼的滑动距离| |layoutdampingRatio|float (默认: 0)|触发下拉后的滑动距离衰减率
取值范围: 0~1
0: 无衰减
0.5: 衰减一半| |layout
rollbackDuration|integer (默认: 200)|回退的动画时长| |layoutenterDuration|integer (默认: 500)|进入二楼的动画时长| |layoutexitDuration|integer (默认: 400)|退出二楼的动画时长| |layoutonEnterSecondFloor|string|进入二楼的回调方法
使用方法同android:onClick属性| |layout
onExitSecondFloor|string|退出二楼的回调方法
使用方法同上|

布局示例:

<!--头部View(可以是任何View)-->
<textview android:id="@+id/headerView" android:layout_width="match_parent" android:layout_height="150dp" android:background="@color/colorPrimary" android:gravity="center" android:text="@string/app_name" android:textcolor="@android:color/white" android:textsize="28sp"></textview>

<!--二楼View(可以是任何View)-->
<androidx.recyclerview.widget.recyclerview android:id="@+id/secondFloorView" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" app:layout_behavior="com.wuyr.secondfloorbehavior.SecondFloorBehavior" app:layout_dampingratio="0.5" app:layout_enterduration="1000" app:layout_exitduration="1000" app:layout_mintriggeroffset="150dp" app:layout_onentersecondfloor="onEnterSecondFloor" app:layout_onexitsecondfloor="onExitSecondFloor" app:layout_rollbackduration="500" app:layout_startinterceptdistance="200dp"></androidx.recyclerview.widget.recyclerview>

<!--一楼View(可以是任何View)-->
<androidx.constraintlayout.widget.constraintlayout android:id="@+id/firstFloorView" android:layout_width="match_parent" android:layout_height="match_parent">

    <androidx.swiperefreshlayout.widget.swiperefreshlayout android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintstart_tostartof="parent" app:layout_constrainttop_totopof="parent">

        <androidx.recyclerview.widget.recyclerview android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"></androidx.recyclerview.widget.recyclerview>
    </androidx.swiperefreshlayout.widget.swiperefreshlayout>
</androidx.constraintlayout.widget.constraintlayout>

</androidx.coordinatorlayout.widget.coordinatorlayout>

Demo下载: app-debug.apk

库源码地址: https://github.com/Ifxcyr/SecondFloorBehavior

效果图:(图片有点大,加载挺慢,可以安装上面的APK来预览)

preview preview preview preview

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.