开始使用
简单介绍
Android SwipeDrawer滑动抽屉库,可同时添加上下左右四个方向抽屉布局,抽屉打开模式有抽屉模式、覆盖模式、固定模式三种,支持无限嵌套,支持边缘滑动打开等,SwipeDrawer还可以当做下拉刷新布局使用,支持ListView、RecyclerView、GridView、ScrollView等。
如何使用
添加仓库地址:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
添加依赖:
dependencies {
...
implementation 'cn.Leaqi:SwipeDrawer:1.6'
}
在布局文件中加入:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:leftLayout="@+id/leftDrawer">
<!-- leftLayout属性指定Left布局 -->
<LinearLayout
android:id="@+id/leftDrawer"
android:layout_width="200dp"
android:layout_height="match_parent"
android:background="#FF5722">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Left" />
</LinearLayout>
<!-- 默认第一个未指定ID的布局为主布局 -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Main" />
</RelativeLayout>
</cn.leaqi.drawer.SwipeDrawer>
使用文档
布局属性
属性名称 | 说明 | 类型 | 默认值 |
---|---|---|---|
mode |
打开模式: :抽屉模式 :覆盖模式 :固定模式 |
enum | drawer |
open |
初始化状态: :打开Left :打开Top :打开Right :打开Bottom |
enum | - |
mask |
背景遮罩: :不开启 :固定遮罩颜色 :遮罩逐渐深浅 |
enum | none |
mainLayout | 指定主布局ID | reference | 默认为第一个未指定ID的布局 |
leftLayout | 指定Left布局ID | reference | - |
topLayout | 指定Top布局ID | reference | - |
rightLayout | 指定Right布局ID | reference | - |
bottomLayout | 指定Bottom布局ID | reference | - |
mainType |
主布局类型: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
enum | view |
leftType |
Left布局类型: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
enum | view |
topType |
Top布局类型: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
enum | view |
rightType |
Right布局类型: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
enum | view |
bottomType |
Bottom布局类型: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
enum | view |
leftMode |
指定Left打开模式: :抽屉模式 :覆盖模式 :固定模式 |
enum | drawer |
topMode |
指定Top打开模式: :抽屉模式 :覆盖模式 :固定模式 |
enum | drawer |
rightMode |
指定Right打开模式: :抽屉模式 :覆盖模式 :固定模式 |
enum | drawer |
bottomMode |
指定Bottom打开模式: :抽屉模式 :覆盖模式 :固定模式 |
enum | drawer |
mainOpen |
打开后主布局触摸事件: :不屏蔽 :只允许点击 :禁止所有触摸事件 |
enum | none |
parentDrawer | 指定SwipeDrawer父布局ID,嵌套时使用 | reference | - |
mainScroll | 指定主布局下滑动布局ID | reference | - |
leftScroll | 指定Left主布局下滑动布局ID | reference | - |
topScroll | 指定Top主布局下滑动布局ID | reference | - |
rightScroll | 指定Right主布局下滑动布局ID | reference | - |
bottomScroll | 指定Bottom布局下滑动布局ID | reference | - |
leftDragOpen | Left布局拖拽打开 | boolean | true |
topDragOpen | Top布局拖拽打开 | boolean | true |
rightDragOpen | Right布局拖拽打开 | boolean | true |
bottomDragOpen | Bottom布局拖拽打开 | boolean | true |
showLayout | 非当前操作的布局是否隐藏 | boolean | false |
autoClose | 打开后是否关闭其他SwipeDrawer | boolean | false |
maskClose | 点击遮罩后关闭 | boolean | false |
maskColor | 遮罩颜色 | color | #80000000 |
dragClose | 允许拖拽关闭 | boolean | true |
dragCloseType |
拖拽关闭类型: :全布局 :主布局 :抽屉布局 注:最低版本需 >= 1.4 |
enum | all |
scrollOuterDrag | 滑动布局之外是否允许拖拽关闭 | boolean | false |
autoLayout | 尺寸发生变化是否自动更新注:最低版本需 >= 1.2 | boolean | true |
shrinkRange | 拖拽距离: 默认值为:,拖动方向高/宽度的5分之1 :可以拖拽,但不会开启或关闭 |
float | 5 |
dragDamping | 拖拽阻力:0-9 :无阻力注:版本 >= 1.5 时值范围在0-99,值越大速度越快 |
int | 10 |
dragRange | 边缘拖拽 布局方向的最边缘dip才允许拖拽 :全布局拖拽 |
dip | 0 |
leftDragRange | Left边缘拖拽 Left布局方向的最边缘dip才允许拖拽 :全布局拖拽注:最低版本需 >= 1.5 |
dip | 0 |
topDragRange | Top边缘拖拽 Top布局方向的最边缘dip才允许拖拽 :全布局拖拽注:最低版本需 >= 1.5 |
dip | 0 |
rightDragRange | Right边缘拖拽 Right布局方向的最边缘dip才允许拖拽 :全布局拖拽注:最低版本需 >= 1.5 |
dip | 0 |
bottomDragRange | Bottom边缘拖拽 Bottom布局方向的最边缘dip才允许拖拽 :全布局拖拽注:最低版本需 >= 1.5 |
dip | 0 |
leftOffset | Left布局偏移 Left布局向外偏移dip注:最低版本需 >= 1.5 |
dip | 0 |
topOffset | Top布局偏移 Top布局向外偏移dip注:最低版本需 >= 1.5 |
dip | 0 |
rightOffset | Right布局偏移 Right布局向外偏移dip注:最低版本需 >= 1.5 |
dip | 0 |
bottomOffset | Bottom布局偏移 Bottom布局向外偏移dip注:最低版本需 >= 1.5 |
dip | 0 |
dragSlop | 拖拽拦截距离 当拖拽距离大于时才拦截事件注:最低版本需 >= 1.1 |
dip | 5px |
turnCancel | 回拽取消操作 当拖拽达到打开或关闭距离时,回拽距离大于时释放后会取消操作注:最低版本需 >= 1.6 |
dip | 10px |
maxDragSize | 最大拖拽高/宽度 :布局高/宽度 |
dip | 0 |
duration | 动画速度 | int | 200 |
interpolator | 动画插值器 | reference | AccelerateDecelerateInterpolator |
获取属性
方法名称 | 说明 | 返回 |
---|---|---|
getShow() |
获取是否打开 |
boolean |
getIntercept() |
获取是否拦截事件,及正在拖拽 |
boolean |
getArriveRange() |
获取拖拽是否超过打开/关闭的距离 |
boolean |
getDirection() |
获取操作的方向: :未操作 :Left布局 :Top布局 :Right布局 :Bottom布局 |
int |
getMaskView() |
获取遮罩View,未设置为 |
view |
getMainView() |
获取主布局View,未设置为 |
view |
getLeftView() |
获取Left布局View,未设置为 |
view |
getTopView() |
获取Top布局View,未设置为 |
view |
getRightView() |
获取Right布局View,未设置为 |
view |
getBottomView() |
获取Bottom布局View,未设置为 |
view |
getMode() |
获取属性: :抽屉模式 :覆盖模式 :固定模式 |
int |
getLeftMode() |
获取属性: :抽屉模式 :覆盖模式 :固定模式 |
int |
getTopMode() |
获取属性: :抽屉模式 :覆盖模式 :固定模式 |
int |
getRightMode() |
获取属性: :抽屉模式 :覆盖模式 :固定模式 |
int |
getBottomMode() |
获取属性: :抽屉模式 :覆盖模式 :固定模式 |
int |
getMask() |
获取属性: :不开启 :固定遮罩颜色 :遮罩逐渐深浅 |
int |
getMainType() |
获取属性: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
int |
getLeftType() |
获取属性: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
int |
getTopType() |
获取属性: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
int |
getRightType() |
获取属性: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
int |
getBottomType() |
获取属性: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
int |
getMainOpen() |
获取属性: :不屏蔽 :只允许点击 :禁止所有触摸事件 |
int |
getShrinkRange() |
获取属性 |
float |
getDragDamping() |
获取属性 |
int |
getDragRange() |
获取属性 |
int |
getLeftDragRange() |
获取属性注:最低版本需 >= 1.5 |
int |
getTopDragRange() |
获取属性注:最低版本需 >= 1.5 |
int |
getRightDragRange() |
获取属性注:最低版本需 >= 1.5 |
int |
getBottomDragRange() |
获取属性注:最低版本需 >= 1.5 |
int |
getLeftOffset() |
获取属性注:最低版本需 >= 1.5 |
int |
getTopOffset() |
获取属性注:最低版本需 >= 1.5 |
int |
getRightOffset() |
获取属性注:最低版本需 >= 1.5 |
int |
getBottomOffset() |
获取属性注:最低版本需 >= 1.5 |
int |
getDragSlop() |
获取属性注:最低版本需 >= 1.1 |
int |
getTurnCancel() |
获取属性注:最低版本需 >= 1.6 |
int |
getMaxDragSize() |
获取属性 |
int |
getDuration() |
获取属性 |
int |
getLeftDragOpen() |
获取属性 |
boolean |
getTopDragOpen() |
获取属性 |
boolean |
getRightDragOpen() |
获取属性 |
boolean |
getBottomDragOpen() |
获取属性 |
boolean |
getShowLayout() |
获取属性 |
boolean |
getAutoClose() |
获取属性 |
boolean |
getMaskClose() |
获取属性 |
boolean |
getMaskColor() |
获取属性 |
int |
getScrollOuterDrag() |
获取属性 |
boolean |
getAutoLayout() |
获取属性注:最低版本需 >= 1.4 |
boolean |
设置属性
方法名称 | 说明 | 参数 |
---|---|---|
setMainScale(float scale) |
设置主布局缩放 |
scale: |
setMainRotation(float rotation) |
设置主布局旋转 |
rotation: |
setIntercept(boolean intercept) |
设置手动拦截所有方向触摸事件 |
intercept: |
setIntercept(View view, boolean intercept) |
设置手动拦截指定方向触摸事件 |
view: intercept: |
setIntercept(int type, boolean intercept) |
设置手动拦截指定方向触摸事件 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 intercept: |
setMode(int type) |
设置属性 |
type: :抽屉模式 :覆盖模式 :固定模式 |
setLeftMode(int type) |
设置属性 |
type: :抽屉模式 :覆盖模式 :固定模式 |
setRightMode(int type) |
设置属性 |
type: :抽屉模式 :覆盖模式 :固定模式 |
setTopMode(int type) |
设置属性 |
type: :抽屉模式 :覆盖模式 :固定模式 |
setBottomMode(int type) |
设置属性 |
type: :抽屉模式 :覆盖模式 :固定模式 |
setMask(int type) |
设置属性 |
type: :不开启 :固定遮罩颜色 :遮罩逐渐深浅 |
setMainType(int type) |
设置属性 |
type: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
setLeftType(int type) |
设置属性 |
type: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
setTopType(int type) |
设置属性 |
type: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
setRightType(int type) |
设置属性 |
type: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
setBottomType(int type) |
设置属性 |
type: :非滑动布局 :垂直滑动布局 :水平滑动布局 |
setMainOpen(int type) |
设置属性 |
type: :不屏蔽 :只允许点击 :禁止所有触摸事件 |
setMainLayout(int id) |
设置属性 |
id: |
setMainLayout(View view) |
设置属性 |
view: |
setLeftLayout(int id) |
设置属性 |
id: |
setLeftLayout(View view) |
设置属性 |
view: |
setTopLayout(int id) |
设置属性 |
id: |
setTopLayout(View view) |
设置属性 |
view: |
setRightLayout(int id) |
设置属性 |
id: |
setRightLayout(View view) |
设置属性 |
view: |
setBottomLayout(int id) |
设置属性 |
id: |
setBottomLayout(View view) |
设置属性 |
view: |
setMainScroll(int id) |
设置属性 |
id: |
setMainScroll(View view) |
设置属性 |
view: |
setLeftScroll(int id) |
设置属性 |
id: |
setLeftScroll(View view) |
设置属性 |
view: |
setTopScroll(int id) |
设置属性 |
id: |
setTopScroll(View view) |
设置属性 |
view: |
setRightScroll(int id) |
设置属性 |
id: |
setRightScroll(View view) |
设置属性 |
view: |
setBottomScroll(int id) |
设置属性 |
id: |
setBottomScroll(View view) |
设置属性 |
view: |
setParentDrawer(int id) |
设置属性 |
id: |
setParentDrawer(SwipeDrawer view) |
设置属性 |
SwipeDrawer: |
setShrinkRange(float num) |
设置属性 |
num: |
setDragDamping(int num) |
设置属性 |
num:0-9 |
setDragRange(int num) |
设置属性 |
num:px |
setLeftDragRange(int num) |
设置属性注:最低版本需 >= 1.5 |
num:px |
setTopDragRange(int num) |
设置属性注:最低版本需 >= 1.5 |
num:px |
setRightDragRange(int num) |
设置属性注:最低版本需 >= 1.5 |
num:px |
setBottomDragRange(int num) |
设置属性注:最低版本需 >= 1.5 |
num:px |
setLeftOffset(int num) |
设置属性注:最低版本需 >= 1.5 |
num:px |
setTopOffset(int num) |
设置属性注:最低版本需 >= 1.5 |
num:px |
setRightOffset(int num) |
设置属性注:最低版本需 >= 1.5 |
num:px |
setBottomOffset(int num) |
设置属性注:最低版本需 >= 1.5 |
num:px |
setDragSlop(int num) |
设置属性注:最低版本需 >= 1.1 |
num:px |
setTurnCancel(int num) |
设置属性注:最低版本需 >= 1.6 |
num:px |
setMaxDragSize(int num) |
设置属性 |
num:px |
setLeftDragOpen(boolean bool) |
设置属性 |
bool: |
setTopDragOpen(boolean bool) |
设置属性 |
bool: |
setRightDragOpen(boolean bool) |
设置属性 |
bool: |
setBottomDragOpen(boolean bool) |
设置属性 |
bool: |
setShowLayout(boolean bool) |
设置属性 |
bool: |
setAutoClose(boolean bool) |
设置属性 |
bool: |
setMaskClose(boolean bool) |
设置属性 |
bool: |
setMaskColor(int color) |
设置属性 |
int: |
setDragClose(boolean bool) |
设置属性 |
bool: |
setScrollOuterDrag(boolean bool) |
设置属性 |
bool: |
setAutoLayout(boolean bool) |
设置属性注:最低版本需 >= 1.4 |
bool: |
setDuration(int ms) |
设置属性 |
ms:毫秒 |
setInterpolator(Interpolator interpolator) |
设置属性 |
interpolator:插值器 |
回调接口
方法名称 | 说明 | 参数 |
---|---|---|
setOnDrawerState(OnDrawerState listener) |
监听开始、移动、开启、关闭、取消回调 |
listener: |
setOnDrawerSwitch(OnDrawerSwitch listener) |
监听开启、关闭回调 |
listener: |
setOnDrawerChange(OnDrawerChange listener) |
监听改变,由参数返回各种状态 |
listener: |
调用方法
方法名称 | 说明 | 参数 |
---|---|---|
openDrawer(int type) |
打开指定方向 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 |
openDrawer(int type, boolean anim) |
打开指定方向、动画设置 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 anim:是否开启动画 |
openDrawer(int type, boolean anim, boolean call) |
打开指定方向、动画设置、回调设置 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 anim:是否开启动画 call:是否回调接口 |
closeDrawer() |
关闭 |
- |
closeDrawer(boolean anim) |
关闭、动画设置 |
anim:是否开启动画 |
closeDrawer(boolean anim, boolean call) |
关闭、动画设置、回调设置 |
anim:是否开启动画 call:是否回调接口 |
closeDrawer(int type) |
关闭指定方向 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 |
closeDrawer(int type, boolean anim) |
关闭指定方向、动画设置 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 anim:是否开启动画 |
closeDrawer(int type, boolean anim, boolean call) |
关闭指定方向、动画设置、回调设置 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 anim:是否开启动画 call:是否回调接口 |
toggleDrawer(int type) |
打开/关闭指定方向 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 |
toggleDrawer(int type, boolean anim) |
打开/关闭指定方向、动画设置 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 anim:是否开启动画 |
toggleDrawer(int type, boolean anim, boolean call) |
打开/关闭指定方向、动画设置、回调设置 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 anim:是否开启动画 call:是否回调接口 |
setIntercept(boolean intercept) |
屏蔽所有方向触摸事件 |
intercept:是否允许触摸 |
setIntercept(int type, boolean intercept) |
屏蔽指定方向触摸事件 |
type: :Left方向 :Top方向 :Right方向 :Bottom方向 intercept:是否允许触摸 |
setIntercept(View view, boolean intercept) |
屏蔽指定方向触摸事件 |
view:指定方向 intercept:是否允许触摸 |
drawerLayout() |
手动更新布局,需在关闭的情况下进行注:最低版本需 >= 1.2 |
- |
全局方法
方法名称 | 说明 | 参数/返回 |
---|---|---|
SwipeDrawer.setAllIntercept(boolean bool) |
设置屏蔽所有触摸事件 |
bool: |
SwipeDrawer.getAllIntercept() |
获取触摸事件是否屏蔽 |
boolean |
SwipeDrawer.getParentDrawer(View view) |
获取view的父级 |
SwipeDrawer |