在進行Compose應用開發時,發現沒有下拉刷新上拉載入,沒有Android原生提供的SwipeRefreshLayout。 查看官方simple樣例(https://github.com/android/compose-samples),在官方樣例的基礎進行簡單封裝, 編寫的了ComposeRef ...
在進行Compose應用開發時,發現沒有下拉刷新上拉載入,沒有Android原生提供的SwipeRefreshLayout。
查看官方simple樣例(https://github.com/android/compose-samples),在官方樣例的基礎進行簡單封裝,
編寫的了ComposeRefreshLayout庫(github:https://github.com/xiaoyu00/ComposeRefreshLayout)
ComposeRefreshLayout 是一個簡單易用的下拉刷新庫,代碼簡單易用,可自定義刷新頭與上拉載入View。
效果展示
說明
因刷新頭與上拉載入View全部為自定義,比較靈活,所以本庫里不包含預設刷新頭與載入View,效果中的刷新頭與載入View代碼在app目錄下的simple里
引入
repositories {
...
maven { url 'https://jitpack.io' }
}dependencies {
implementation 'com.github.xiaoyu00:ComposeRefreshLayout:1.0.0'
}
下拉刷新
RefreshLayout(refreshingState = refreshing, onRefresh = { refreshing = true scope.launch { delay(2000) refreshing = false } }, refreshHeader = { offset, state -> // RefreshDefaultHeader(state, offset) // RefreshLottieHeader(state) // 你的刷新Header(上面刷新頭代碼在app下simple里)
... }) { // 刷新內容 ... } }
上拉載入(與下拉刷新使用方法相同)
LoadMoreLayout(loadMoreState = isLoadMore, onLoadMore = { isLoadMore = true scope.launch { delay(2000) isLoadMore = false } }, loadMore = { offset, state -> // LoadMoreDefaultView(state, isNoMore)(此代碼在app下simple里) // 你的載入View
... }) {
// 載入內容
...
}
組合使用
LoadMoreLayout(loadMoreState = isLoadMore, onLoadMore = { isLoadMore = true scope.launch { delay(2000) isLoadMore = false } }, loadMore = { offset, state -> // LoadMoreDefaultView(state, isNoMore)(此代碼在app下simple里) // 你的載入View
... }) { RefreshLayout(refreshingState = refreshing, onRefresh = { refreshing = true scope.launch { delay(2000) refreshing = false } }, refreshHeader = { offset, state -> //RefreshDefaultHeader(state, offset) (此刷新頭代碼在app下simple里) // 你的刷新Header
... }) { //內容
... } }