• Stars
    star
    191
  • Rank 202,877 (Top 4 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created almost 5 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

只需一个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
layout_startInterceptDistance dimension
默认: HeaderView的高度
开始拦截下拉的滑动距离
layout_minTriggerOffset dimension
默认: HeaderView高度的一半
能够进入二楼的滑动距离
layout_dampingRatio float (默认: 0) 触发下拉后的滑动距离衰减率
取值范围: 0~1
0: 无衰减
0.5: 衰减一半
layout_rollbackDuration integer (默认: 200) 回退的动画时长
layout_enterDuration integer (默认: 500) 进入二楼的动画时长
layout_exitDuration integer (默认: 400) 退出二楼的动画时长
layout_onEnterSecondFloor string 进入二楼的回调方法
使用方法同android:onClick属性
layout_onExitSecondFloor string 退出二楼的回调方法
使用方法同上

布局示例:

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/rootView"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!--头部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" />

    <!--二楼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" //设置Behavior
        app:layout_dampingRatio="0.5" //设置衰减率为0.5,即:手指滑动到100的时候,View的偏移量是50
        app:layout_enterDuration="1000" //设置进入二楼的动画时长为1秒
        app:layout_exitDuration="1000" //设置退出二楼的动画时长为1秒
        app:layout_minTriggerOffset="150dp" //设置触发进入二楼的滑动距离为150dp
        app:layout_onEnterSecondFloor="onEnterSecondFloor" //当进入二楼时会回调Activity中的onEnterSecondFloor()方法
        app:layout_onExitSecondFloor="onExitSecondFloor" //同上,此为监听退出二楼
        app:layout_rollbackDuration="500" //设置回退的动画时长为0.5秒
        app:layout_startInterceptDistance="200dp" //当下拉刷新控件下拉到200dp时触发二楼的下拉 
        />

    <!--一楼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.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

More Repositories

1

PathLayoutManager

RecyclerView的LayoutManager,轻松实现各种炫酷、特殊效果,再也不怕产品经理为难!
Java
2,036
star
2

GoogleLibraryVersionQuerier

一款Android Studio插件,帮助你快速添加依赖库和查询历史版本
Kotlin
1,196
star
3

LitePager

LitePager,一个轻量级的ViewPager,仿新版网易云歌单广场
Kotlin
623
star
4

intellij-media-player

【🐟摸鱼专用】上班偷偷看视频📺而不会被老板打🔨的IDE插件,适配JetBrains全家桶
Kotlin
582
star
5

RippleAnimation

仿酷安客户端的主题切换动画效果
Java
392
star
6

HookwormForAndroid

一个基于Magisk&Riru的Module,可以助你用超低成本开发各种Hook插件,无须Xposed
Kotlin
325
star
7

RandomDragLayout

任意拖布局 (扩展自QQ空间的列表Header效果)
Java
222
star
8

ArcSlidingHelper

Android弧形滑动辅助 (使用超简单)
Java
168
star
9

CatchPiggy

捉小猪是一款很有趣的Android休闲小游戏
Java
168
star
10

PathView

仿BiliBili客户端聊天弹幕室线条动画效果
Java
161
star
11

incremental-compiler

适用于Android项目的Gradle插件,用来增量编译class和生成增量dex。跟自带的增量编译Task(assemble)的区别是:这个插件只会编译源文件,不做其他多余的动作
Kotlin
128
star
12

FanLayout

可定制性超强的圆弧滑动组件
Java
127
star
13

ArrowDrawable

纯Paint实现的一个射箭效果,可用作Loading动画。
Kotlin
114
star
14

CoffeeDrawable

纯Paint实现的一个搅拌咖啡效果,可用作Loading动画。
Kotlin
93
star
15

HexagramDecoder

易经64卦编解码
Kotlin
84
star
16

HideImageMaker

制作隐藏图片(幻影坦克)
Java
84
star
17

ActivityMessenger

ActivityMessenger,借助Kotlin特性,简化Activity之间传参和回调的逻辑代码。
Kotlin
55
star
18

CanvasX

脱离Android模拟器,在Java程序中使用Android下的Canvas、Paint、Bitmap等Graphics类(提取自Android Studio)
Java
39
star
19

HookwormForWanAndroidTest

HookwormForAndroid实战示例
Kotlin
33
star
20

jdwp-injector-for-android

借助adb协议+jdwp协议在Android端实现基于debugger的代码注入工具
Kotlin
32
star
21

DMifier

适用于Android项目的IDEA插件,用来自动生成DexMaker代码,类似『ASM Bytecode Viewer』
Kotlin
28
star
22

CoffinLayout

仿燃兔APP的游戏详情界面
Java
23
star
23

agent-injector-for-android

基于JVMTI实现的Android端动态代码注入工具
C
10
star
24

PatternPasswordViewer

root权限查看手机九宫格密码
Java
7
star
25

wuyr.github.io

CSS
2
star