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
  • 就像 Web Api 介面可以對入參進行驗證,避免用戶傳入非法的或者不符合我們預期的參數一樣,選項也可以對配置源的內容進行驗證,避免配置中的值與選項類中的屬性不對應或者不滿足預期,畢竟大部分配置都是通過字元串的方式,驗證是很有必要的。 1. 註解驗證 像入參驗證一樣,選項驗證也可以通過特性註解方便地 ...
  • 原文作者:aircraft 原文鏈接:https://www.cnblogs.com/DOMLX/p/17270107.html 加工的泛型類如下: using System; using System.Collections.Generic; using System.IO; using Syst ...
  • 在前一篇文章,我們瞭解瞭如何通過.NET6+Quartz開發基於控制台應用程式的定時任務,今天繼續在之前的基礎上,進一步講解基於ASP.NET Core MVC+Quartz實現定時任務的可視化管理頁面,僅供學習分享使用,如有不足之處,還請指正。 涉及知識點 Quartz組件,關於Quartz組件的 ...
  • 面向對象1 面向對象,更在乎的結果,而過程的實現並不重要 IDea快捷鍵(基礎版) | 快捷鍵 | 作用 | | | | | ctrl + / | 快捷註釋 | | ctrl + shift + / | 多行註釋 | | ctrl + d | 快速複製 | | ctrl + shift + up/d ...
  • NX中的checkmate功能是用於檢查模型、圖紙數據的工具,在UGOPEN中有例子。手動操作可以檢查已載入的裝配下所有零部件,可以設置通過後保存模型,檢查結果保存到Teamcenter中,預設保存在零組件版本下。 代碼中可以設置多個檢查規則。相關設置可以在用戶預設設置中進行設置。 1 // 2 / ...
  • JavaSE 運算符 算術運算符:+,-,*,/,%,++(自增),--(自減) i++:先用後+1;++i:先+1後用 賦值運算符:= 擴展賦值運算符:+=,-=,*=,/= a+=b >a=a+b: ​ 可讀性差,但是編譯效率高,且會自動進行類型轉換; ​ 當ab為基本數據類型時,a+b和b+a ...
  • 面向對象2 訪問修飾符 | | private | default | protected | public | | | | | | | | 當前類 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_che ...
  • 推薦一些學習qml教程 Qt官方的QML教程: https://doc.qt.io/qt-5/qtqml-index.html 這是一個由Qt官方提供的完整的QML教程,包含了所有基本知識和高級語法。 QML中文網:http://www.qmlcn.com/ 這是一個非常不錯的中文QML學習網站,提 ...
  • QAbstractBUtton: 所有按鈕控制項的基類 提供按鈕的通用功能 繼承自QWidget 屬於抽象類別,不能直接去使用,必須藉助於子類(除非你覺得子類不夠用,想自定義一個按鈕) 大部分功能之前已經使用過,在這裡只作簡單介紹 文本設置: setText(str) :設置按鈕提示文本 text() ...
  • 使用 VLD 記憶體泄漏檢測工具輔助開發時整理的學習筆記。本篇介紹 VLD 配置文件中配置項 StartDisabled 的使用方法。 ...