Skip to content

Commit

Permalink
发布v1.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jenly1314 committed Jul 20, 2024
1 parent 908baac commit c6b2f44
Show file tree
Hide file tree
Showing 31 changed files with 683 additions and 477 deletions.
51 changes: 24 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@

```gradle
// 极致体验的Compose刷新组件 (*必须)
implementation 'com.github.jenly1314.UltraSwipeRefresh:refresh:1.2.0'
implementation 'com.github.jenly1314.UltraSwipeRefresh:refresh:1.3.0'
// 经典样式的指示器 (可选)
implementation 'com.github.jenly1314.UltraSwipeRefresh:refresh-indicator-classic:1.2.0'
implementation 'com.github.jenly1314.UltraSwipeRefresh:refresh-indicator-classic:1.3.0'
// Lottie动画指示器 (可选)
implementation 'com.github.jenly1314.UltraSwipeRefresh:refresh-indicator-lottie:1.2.0'
implementation 'com.github.jenly1314.UltraSwipeRefresh:refresh-indicator-lottie:1.3.0'
// 进度条样式的指示器 (可选)
implementation 'com.github.jenly1314.UltraSwipeRefresh:refresh-indicator-progress:1.2.0'
implementation 'com.github.jenly1314.UltraSwipeRefresh:refresh-indicator-progress:1.3.0'
```

## 使用
Expand Down Expand Up @@ -74,6 +74,7 @@
* @param dragMultiplier 触发下拉刷新或上拉加载时的阻力系数;值越小,阻力越大;默认为:0.5
* @param finishDelayMillis 完成时延时时间;让完成时的中间状态[UltraSwipeRefreshState.isFinishing]停留一会儿,定格的展示提示内容;默认:500毫秒
* @param vibrateEnabled 是否启用振动,如果启用则当滑动偏移量满足触发刷新或触发加载更多时,会有振动效果;默认为:false
* @param alwaysScrollable 是否始终可以滚动;当为true时,则会忽略刷新中或加载中的状态限制,始终可以进行滚动;默认为:false
* @param headerIndicator 下拉刷新时顶部显示的Header指示器
* @param footerIndicator 上拉加载更多时底部显示的Footer指示器
* @param contentContainer 内容的父容器,便于统一管理
Expand All @@ -91,34 +92,28 @@
fun UltraSwipeRefreshSample() {

val state = rememberUltraSwipeRefreshState()

var itemCount by remember { mutableIntStateOf(20) }

LaunchedEffect(state.isRefreshing) {
if (state.isRefreshing) {
// TODO 刷新的逻辑处理,此处的延时只是为了演示效果
delay(2000)
itemCount = 20
state.isRefreshing = false
}
}

LaunchedEffect(state.isLoading) {
if (state.isLoading) {
// TODO 加载更多的逻辑处理,此处的延时只是为了演示效果
delay(2000)
itemCount += 20
state.isLoading = false
}
}

val coroutineScope = rememberCoroutineScope()

UltraSwipeRefresh(
state = state,
onRefresh = {
state.isRefreshing = true
coroutineScope.launch {
state.isRefreshing = true
// TODO 刷新的逻辑处理,此处的延时只是为了演示效果
delay(2000)
itemCount = 20
state.isRefreshing = false
}
},
onLoadMore = {
state.isLoading = true
coroutineScope.launch {
state.isLoading = true
// TODO 加载更多的逻辑处理,此处的延时只是为了演示效果
delay(2000)
itemCount += 20
state.isLoading = false
}
},
modifier = Modifier.background(color = Color(0x7FEEEEEE)),
headerScrollMode = NestedScrollMode.Translate,
Expand Down Expand Up @@ -200,8 +195,10 @@ UltraSwipeRefreshTheme.config = UltraSwipeRefreshTheme.config.copy(

## 版本记录

#### 待发布版本([提前体验](test.md)
#### v1.3.0 :2024-7-20
* 更新compose至v1.6.0 (v1.5.0 -> v1.6.0) ([#13](https://github.com/jenly1314/UltraSwipeRefresh/issues/13)
* 新增参数`alwaysScrollable`:是否始终可以滚动
* 优化一些细节

#### v1.2.0 :2024-7-1
* 新增参数`contentContainer`:内容的父容器,便于统一管理
Expand Down
3 changes: 1 addition & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ android {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion '1.4.3'
kotlinCompilerExtensionVersion versions.compose_compiler
}
lint {
abortOnError false
Expand All @@ -61,7 +61,6 @@ dependencies {
implementation "androidx.compose.material:material"
implementation "androidx.compose.material3:material3:$versions.material3"
implementation "androidx.navigation:navigation-compose:$versions.navigation_compose"
implementation "androidx.navigation:navigation-compose:$versions.navigation_compose"
implementation "com.google.accompanist:accompanist-swiperefresh:$versions.accompanist"

implementation "com.airbnb.android:lottie-compose:$versions.lottie_compose"
Expand Down
Binary file modified app/release/app-release.apk
Binary file not shown.
4 changes: 2 additions & 2 deletions app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 6,
"versionName": "1.2.0",
"versionCode": 7,
"versionName": "1.3.0",
"outputFile": "app-release.apk"
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Text
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
package com.king.ultraswiperefresh.app.sample

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.Divider
import androidx.compose.material.Text
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
Expand All @@ -22,6 +26,7 @@ import com.king.ultraswiperefresh.indicator.classic.ClassicRefreshFooter
import com.king.ultraswiperefresh.indicator.classic.ClassicRefreshHeader
import com.king.ultraswiperefresh.rememberUltraSwipeRefreshState
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

/**
* 经典的刷新样式示例
Expand All @@ -34,59 +39,44 @@ import kotlinx.coroutines.delay
fun ClassicRefreshIndicatorSample() {

val state = rememberUltraSwipeRefreshState()

var itemCount by remember { mutableIntStateOf(20) }

var hasMoreData by remember { mutableStateOf(true) }

LaunchedEffect(state.isRefreshing) {
if (state.isRefreshing) {
delay(2000)
itemCount = 20
hasMoreData = true
state.isRefreshing = false
}
}

LaunchedEffect(state.isLoading) {
if (state.isLoading) {
delay(2000)
itemCount += 20
state.isLoading = false
}
}
val coroutineScope = rememberCoroutineScope()

LaunchedEffect(state.isFinishing) {
if (itemCount > 50 && !state.isFinishing) {
if (itemCount >= 60 && !state.isFinishing) {
hasMoreData = false
}
}

UltraSwipeRefresh(
state = state,
onRefresh = {
state.isRefreshing = true
coroutineScope.launch {
state.isRefreshing = true
// TODO 刷新的逻辑处理,此处的延时只是为了演示效果
delay(2000)
itemCount = 20
hasMoreData = true
state.isRefreshing = false
}
},
onLoadMore = {
if (hasMoreData) {
coroutineScope.launch {
state.isLoading = true
// TODO 加载更多的逻辑处理,此处的延时只是为了演示效果
delay(2000)
itemCount += 20
state.isLoading = false
}
},
modifier = Modifier.background(color = Color(0x7FEEEEEE)),
loadMoreEnabled = hasMoreData,
headerIndicator = {
ClassicRefreshHeader(it)
},
footerIndicator = {
if (hasMoreData) {
ClassicRefreshFooter(it)
} else {
Text(
text = "———— 我也是有底线的 ————",
color = Color(0xFF999999),
fontSize = 15.sp,
modifier = Modifier.padding(vertical = 16.dp)
)
}
ClassicRefreshFooter(it)
}
) {
LazyColumn(Modifier.background(color = Color.White)) {
Expand All @@ -95,12 +85,25 @@ fun ClassicRefreshIndicatorSample() {
val title = "UltraSwipeRefresh列表标题${it + 1}"
val content = "UltraSwipeRefresh列表内容${it + 1}"
ColumnItem(title = title, content = content)
Divider(
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = Color(0xFFF2F3F6)
)
}
}

if (!hasMoreData) {
item {
Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) {
Text(
text = "没有更多数据了",
color = Color(0xFF999999),
fontSize = 15.sp,
modifier = Modifier.padding(vertical = 16.dp)
)
}
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.Divider
import androidx.compose.material.Text
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
Expand All @@ -30,6 +31,7 @@ import com.king.ultraswiperefresh.indicator.lottie.LottieRefreshFooter
import com.king.ultraswiperefresh.indicator.lottie.LottieRefreshHeader
import com.king.ultraswiperefresh.rememberUltraSwipeRefreshState
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

/**
* 自定义Lottie动画刷新样式示例
Expand All @@ -42,55 +44,50 @@ import kotlinx.coroutines.delay
fun CustomLottieRefreshIndicatorSample() {

val state = rememberUltraSwipeRefreshState()

var itemCount by remember { mutableIntStateOf(20) }

var hasMoreData by remember { mutableStateOf(true) }
val coroutineScope = rememberCoroutineScope()

LaunchedEffect(state.isRefreshing) {
if (state.isRefreshing) {
delay(2000)
itemCount = 20
hasMoreData = true
state.isRefreshing = false
}
var headerScrollMode by remember {
mutableStateOf(NestedScrollMode.FixedBehind)
}

LaunchedEffect(state.isLoading) {
if (state.isLoading) {
delay(2000)
itemCount += 20
state.isLoading = false
}
var footerScrollMode by remember {
mutableStateOf(NestedScrollMode.FixedBehind)
}

LaunchedEffect(state.isFinishing) {
if (itemCount > 50 && !state.isFinishing) {
if (itemCount >= 60 && !state.isFinishing) {
hasMoreData = false
}
}

var headerScrollMode by remember {
mutableStateOf(NestedScrollMode.FixedBehind)
}
var footerScrollMode by remember {
mutableStateOf(NestedScrollMode.FixedBehind)
}

val context = LocalContext.current

UltraSwipeRefresh(
state = state,
onRefresh = {
state.isRefreshing = true
coroutineScope.launch {
state.isRefreshing = true
// TODO 刷新的逻辑处理,此处的延时只是为了演示效果
delay(2000)
itemCount = 20
hasMoreData = true
state.isRefreshing = false
}
},
onLoadMore = {
state.isLoading = true
coroutineScope.launch {
state.isLoading = true
// TODO 加载更多的逻辑处理,此处的延时只是为了演示效果
delay(2000)
itemCount += 20
state.isLoading = false
}
},
modifier = Modifier.background(color = Color(0x7FEEEEEE)),
headerScrollMode = headerScrollMode,
footerScrollMode = footerScrollMode,
loadMoreEnabled = hasMoreData,
modifier = Modifier.background(color = Color(0x7FEEEEEE)),
headerIndicator = {
LottieRefreshHeader(
state = it,
Expand All @@ -117,14 +114,17 @@ fun CustomLottieRefreshIndicatorSample() {
footerScrollMode = nestedScrollModes.random()
context.showToast("滑动模式已随机")
}
Divider(modifier = Modifier.padding(horizontal = 16.dp), color = Color(0xFFF2F3F6))
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = Color(0xFFF2F3F6)
)
}
repeat(itemCount) {
item {
val title = "UltraSwipeRefresh列表标题${it + 1}"
val content = "UltraSwipeRefresh列表内容${it + 1}"
ColumnItem(title = title, content = content)
Divider(
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = Color(0xFFF2F3F6)
)
Expand Down
Loading

0 comments on commit c6b2f44

Please sign in to comment.