Compose 下拉刷新庫——ComposeRefreshLayout

来源:https://www.cnblogs.com/yuan-chen/archive/2023/01/11/17043244.html
-Advertisement-
Play Games

在進行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
      ... }) { //內容
      ... } }
 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、在任意目錄之間快速移動 你發現自己要在兩個或更多目錄之間頻繁移動,一會切換到這裡,一會切換到那裡,來回跳轉。這些目錄之間隔得還挺遠,反覆輸入冗長的路徑讓人疲憊不堪。 使用內建命令 pushd 和 popd 來管理目錄棧,輕鬆地在目錄之間切換。下麵是一個簡單的示例: $ cd /tmp/tank ...
  • 奉行長期主義的開發者都有一個共識:對於伺服器來說,數據備份非常重要,因為伺服器上的數據通常是無價的,如果丟失了這些數據,可能會導致嚴重的後果,伴隨雲時代的發展,備份技術也讓千行百業看到了其“雲基因”的成長與進化,即基於雲存儲的雲備份。 本次我們使用Golang1.18完成百度網盤(百度雲盤)介面AP ...
  • JavaWeb綜合案例 筆記目錄:(https://www.cnblogs.com/wenjie2000/p/16378441.html) 視頻教程(P154~P163) 功能列表 環境搭建 執行提供的下麵的tb_brand.sql腳本 -- 刪除tb_brand表 drop table if ex ...
  • Redis作為一個非關係型資料庫,由於其超高的併發處理性能,及其對緩存場景所提供的系列能力構建,使其成為了集中緩存的絕佳選擇。本篇我們聊聊Redis數據管理的能力,如數據過期、數據淘汰、數據持久化等。 ...
  • 幾天沒寫了,今天寫一個簡單的小題 這道題乍一看,有點沒有頭緒,但是仔細考慮,也不是毫無頭緒. 思路1: 只要會十進位和二進位之間的轉換,將十進位轉二進位,然後存放到數組裡面,接著進行偶數位的操作,最後在轉十進位就好; 但是,有沒有更好的方法呢? 思路2: 電腦裡面數字的存儲本來就是二進位,為何要復 ...
  • Blazor WebAssembly初次訪問需要載入很多dll,體積較大,因此第一次載入比較慢。 針對此問題Microsoft提供了優化方案:壓縮 https://learn.microsoft.com/zh-cn/aspnet/core/blazor/host-and-deploy/webasse ...
  • 在C#里關於定時器類就有3個 1.定義在System.Windows.Forms里 2.定義在System.Threading.Timer類里 3.定義在System.Timers.Timer類里 System.Windows.Forms.Timer是應用於WinForm中的,它是通過Windows ...
  • 此筆記主要是記錄在 LVGL 中使用圖片的幾種方式,以及使用過程中遇到的問題。最近在 ARM linux 中使用 LVGL 時,發現載入圖片變得很卡,一開始還好,當連續載入的圖片變多後,特別是動畫的過程中直接無法看,折騰了一會直接懵逼了,嘗試了各種辦法都沒搞定,後來發現是我沒有好好看文檔,導致的問題 ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...