pref: 上拉加载提示

This commit is contained in:
HuanCheng65 2023-07-17 14:17:21 +08:00
parent ea0bcc9384
commit d24478ae88
No known key found for this signature in database
GPG Key ID: 5EC9DD60A32C7360
2 changed files with 27 additions and 5 deletions

View File

@ -30,7 +30,13 @@ fun LoadMoreLayout(
onLoadMore: () -> Unit,
enableLoadMore: Boolean = true,
loadEnd: Boolean = false,
indicator: @Composable (loadEnd: Boolean) -> Unit = { DefaultIndicator(loadEnd = it) },
indicator: @Composable (Boolean, Boolean, Boolean) -> Unit = { loading, end, willLoad ->
DefaultIndicator(
isLoading = loading,
loadEnd = end,
willLoad = willLoad
)
},
content: @Composable () -> Unit
) {
val loadDistance = with(LocalDensity.current) { LoadDistance.toPx() }
@ -68,7 +74,7 @@ fun LoadMoreLayout(
.offset { IntOffset(0, swipeableState.offset.value.roundToInt()) }
) {
if (enableLoadMore && swipeableState.offset.value != loadDistance) {
indicator(loadEnd)
indicator(isLoading, loadEnd, swipeableState.targetValue)
}
}
@ -78,9 +84,13 @@ fun LoadMoreLayout(
@Composable
fun DefaultIndicator(
isLoading: Boolean,
loadEnd: Boolean,
willLoad: Boolean,
loadingText: String = stringResource(id = R.string.text_loading),
loadEndText: String = stringResource(id = R.string.no_more),
pullToLoadText: String = stringResource(id = R.string.pull_to_load),
releaseToLoadText: String = stringResource(id = R.string.release_to_load),
) {
Surface(
elevation = 8.dp,
@ -89,16 +99,26 @@ fun DefaultIndicator(
) {
Row(
modifier = Modifier
.height(IntrinsicSize.Min)
.padding(10.dp)
.animateContentSize(),
verticalAlignment = Alignment.CenterVertically
) {
if (!loadEnd) {
CircularProgressIndicator(modifier = Modifier.size(20.dp), strokeWidth = 3.dp, color = MaterialTheme.colors.onSurface)
if (isLoading) {
CircularProgressIndicator(
modifier = Modifier.size(20.dp),
strokeWidth = 3.dp,
color = MaterialTheme.colors.onSurface
)
Spacer(modifier = Modifier.width(8.dp))
Text(text = loadingText, modifier = Modifier.padding(horizontal = 8.dp))
} else {
} else if (loadEnd) {
Text(text = loadEndText, modifier = Modifier.padding(horizontal = 8.dp))
} else {
Text(
text = if (willLoad) releaseToLoadText else pullToLoadText,
modifier = Modifier.padding(horizontal = 8.dp)
)
}
}
}

View File

@ -680,4 +680,6 @@
<string name="title_sub_posts">%d 楼的回复</string>
<string name="title_sub_posts_default">回复</string>
<string name="title_sub_posts_header">%d 条回复</string>
<string name="pull_to_load">继续上拉加载</string>
<string name="release_to_load">松开加载</string>
</resources>