# android-nest-scroll-ptr
**Repository Path**: s1riusnoone/android-nest-scroll-ptr
## Basic Information
- **Project Name**: android-nest-scroll-ptr
- **Description**: No description available
- **Primary Language**: Android
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-08-05
- **Last Updated**: 2021-08-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Android, Composer, 下拉刷新, Jetpack-Compose, pull-to-refresh
## README
# android-nest-scroll-ptr
本库实现了下拉刷新的逻辑,且实现了嵌套滑动接口。在嵌套滑动机制下正常工作。易于扩展和自定义。
### 支持环境
- minsdk 14/21(compose)
- kotlin | compose
### 特性
- 使用状态机实现
- 支持嵌套滑动
- 支持Jetpack Compose
- 易于扩展
### Demo
- instagram 刷新样式
- 微信首页小程序下拉
- 微信朋友圈下拉
- Android 官方嵌套滑动 demo 适配
### 开始使用
- 添加依赖
```
repositories {
...
mavenCentral()
...
}
dependencies {
...
// android view system 的依赖
implementation "wtf.s1.ui:nsptr-view:x.x.x"
// jetpack compose 的依赖
implementation "wtf.s1.ui:nsptr-compose:x.x.x"
...
}
```
- 在Compose中使用
```kotlin
val coroutine = rememberCoroutineScope()
val nsPtrState = remember {
NSPtrState(
coroutineScope = coroutine
) {
// todo 刷新逻辑
it.dispatchPtrEvent(Event.RefreshComplete)
}
}
NSPtrLayout(
nsPtrState = nsPtrState,
modifier = Modifier.fillMaxSize(),
) {
NSPtrEZHeader(
modifier = Modifier
.offset(0.dp, 12.dp),
nsPtrState = nsPtrState
)
LazyColumn(Modifier.ptrContent()) {
items(10) { index ->
// todo
}
}
}
```
- 用代码实现
```kotlin
addView(
NSPtrEZLayout(context).apply {
addView(
RecyclerView(context).apply {
// 添加数据和adapter
},
NSPtrLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT
)
)
addPtrListener(object : NSPtrListener {
override fun onRefreshing(ptrLayout: NSPtrLayout) {
super.onRefreshing(ptrLayout)
// 下拉刷新开始,请求网路
}
})
// 自动刷新
isRefreshing = true
},
LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
)
```
- 用XML实现
```xml
```