OpenHarmony環(huán)境下可用的下拉刷新胎围、上拉加載組件【PullToRefresh】

簡介

PullToRefresh是一款OpenHarmony環(huán)境下可用的下拉刷新吁系、上拉加載組件。
支持設(shè)置內(nèi)置動畫的各種屬性白魂,支持設(shè)置自定義動畫汽纤,支持lazyForEarch的數(shù)據(jù)作為數(shù)據(jù)源。

效果展示:

內(nèi)置動畫效果

下載安裝

ohpm install @ohos/pulltorefresh

使用說明

快速使用

import { PullToRefresh } from '@ohos/pulltorefresh'

// 需綁定列表或?qū)m格組件
private scroller: Scroller = new Scroller();
  
PullToRefresh({
// 必傳項福荸,列表組件所綁定的數(shù)據(jù)
data: $data,
// 必傳項蕴坪,需綁定傳入主體布局內(nèi)的列表或?qū)m格組件
scroller: this.scroller,
// 必傳項,自定義主體布局敬锐,內(nèi)部有列表或?qū)m格組件
customList: () => {
  // 一個用@Builder修飾過的UI方法
  this.getListView();
},
// 可選項背传,下拉刷新回調(diào)
onRefresh: () => {
  return new Promise<string>((resolve, reject) => {
    // 模擬網(wǎng)絡(luò)請求操作,請求網(wǎng)絡(luò)2秒后得到數(shù)據(jù)台夺,通知組件径玖,變更列表數(shù)據(jù)
    setTimeout(() => {
      resolve('刷新成功');
      this.data = this.dataNumbers;
    }, 2000);
  });
},
// 可選項,上拉加載更多回調(diào)
onLoadMore: () => {
  return new Promise<string>((resolve, reject) => {
    // 模擬網(wǎng)絡(luò)請求操作颤介,請求網(wǎng)絡(luò)2秒后得到數(shù)據(jù)梳星,通知組件,變更列表數(shù)據(jù)
    setTimeout(() => {
      resolve('');
      this.data.push("增加的條目" + this.data.length);
    }, 2000);
  });
},
customLoad: null,
customRefresh: null,
})

其中List組件需要設(shè)置edgeEffect屬性為(EdgeEffect.None)

設(shè)置屬性示例和設(shè)置自定義動畫示例請看示例entry

支持lazyForEarch的數(shù)據(jù)作為數(shù)據(jù)源

LazyForEach從提供的數(shù)據(jù)源中按需迭代數(shù)據(jù)滚朵,并在每次迭代過程中創(chuàng)建相應(yīng)的組件冤灾。當LazyForEach在滾動容器中使用了,框架會根據(jù)滾動容器可視區(qū)域按需創(chuàng)建組件辕近,當組件滑出可視區(qū)域外時韵吨,框架會進行組件銷毀回收以降低內(nèi)存占用
接口描述:

LazyForEach(
    dataSource: IDataSource,             // 需要進行數(shù)據(jù)迭代的數(shù)據(jù)源
    itemGenerator: (item: any, index?: number) => void,  // 子組件生成函數(shù)
    keyGenerator?: (item: any, index?: number) => string // 鍵值生成函數(shù)
): void

IDataSource類型說明

interface IDataSource {
    totalCount(): number; // 獲得數(shù)據(jù)總數(shù)
    getData(index: number): Object; // 獲取索引值對應(yīng)的數(shù)據(jù)
    registerDataChangeListener(listener: DataChangeListener): void; // 注冊數(shù)據(jù)改變的監(jiān)聽器
    unregisterDataChangeListener(listener: DataChangeListener): void; // 注銷數(shù)據(jù)改變的監(jiān)聽器
}

DataChangeListener類型說明

interface DataChangeListener {
    onDataReloaded(): void; // 重新加載數(shù)據(jù)時調(diào)用
    onDataAdded(index: number): void; // 添加數(shù)據(jù)時調(diào)用
    onDataMoved(from: number, to: number): void; // 數(shù)據(jù)移動起始位置與數(shù)據(jù)移動目標位置交換時調(diào)用
    onDataDeleted(index: number): void; // 刪除數(shù)據(jù)時調(diào)用
    onDataChanged(index: number): void; // 改變數(shù)據(jù)時調(diào)用
    onDataAdd(index: number): void; // 添加數(shù)據(jù)時調(diào)用
    onDataMove(from: number, to: number): void; // 數(shù)據(jù)移動起始位置與數(shù)據(jù)移動目標位置交換時調(diào)用
    onDataDelete(index: number): void; // 刪除數(shù)據(jù)時調(diào)用
    onDataChange(index: number): void; // 改變數(shù)據(jù)時調(diào)用
}

具體使用請看 openharmony:LazyForEach:數(shù)據(jù)懶加載

屬性(接口)說明

PullToRefresh組件屬性

屬性 類型 釋義 默認值
data Object[] 列表或?qū)m格組件所綁定的數(shù)據(jù) undefined
scroller Scroller 列表或?qū)m格組件所綁定的Scroller對象 undefined
customList () => void 自定義主體布局,內(nèi)部有列表或?qū)m格組件 undefined
refreshConfigurator PullToRefreshConfigurator 組件屬性配置 PullToRefreshConfigurator
mWidth Length 容器寬 undefined(自適應(yīng))
mHeight Length 容器高 undefined(自適應(yīng))
onRefresh () => Promise<string> 下拉刷新回調(diào) 1秒后結(jié)束下拉刷新動畫并提示“刷新失敗”
onLoadMore () => Promise<string> 上拉加載更多回調(diào) 1秒后結(jié)束上拉加載動畫
customRefresh () => void 自定義下拉刷新動畫布局 undefined
onAnimPullDown (value?: number, width?: number, height?: number) => void 下拉中回調(diào) undefined
onAnimRefreshing (value?: number, width?: number, height?: number) => void 刷新中回調(diào) undefined
customLoad () => void 自定義上拉加載動畫布局 undefined
onAnimPullUp (value?: number, width?: number, height?: number) => void 上拉中回調(diào) undefined
onAnimLoading (value?: number, width?: number, height?: number) => void 加載中回調(diào) undefined

PullToRefreshConfigurator類接口

接口 參數(shù)類型 釋義 默認值
setHasRefresh boolean 是否具有下拉刷新功能 true
setHasLoadMore boolean 是否具有上拉加載功能 true
setMaxTranslate number 可下拉上拉的最大距離 100
setSensitivity number 下拉上拉靈敏度 0.7
setListIsPlacement boolean 滑動結(jié)束后列表是否歸位 true
setAnimDuration number 滑動結(jié)束后亏推,回彈動畫執(zhí)行時間 150
setRefreshHeight number 下拉動畫高度 30
setRefreshColor string 下拉動畫顏色 '#999999'
setRefreshBackgroundColor ResourceColor 下拉動畫區(qū)域背景色 'rgba(0,0,0,0)'
setRefreshTextColor ResourceColor 下拉加載完畢后提示文本的字體顏色 '#999999'
setRefreshTextSize number 或 string 或 Resource 下拉加載完畢后提示文本的字體大小 18
setRefreshAnimDuration number 下拉動畫執(zhí)行一次的時間 1000
setLoadImgHeight number 上拉動畫中圖片的高度 30
setLoadBackgroundColor ResourceColor 上拉動畫區(qū)域背景色 'rgba(0,0,0,0)'
setLoadTextColor ResourceColor 上拉文本的字體顏色 '#999999'
setLoadTextSize number 或 string 或 Resource 上拉文本的字體大小 18
setLoadTextPullUp1 string 上拉1階段文本 '正在上拉刷新...'
setLoadTextPullUp2 string 上拉2階段文本 '放開刷新'
setLoadTextLoading string 上拉加載更多中時的文本 '正在玩命加載中...'

約束與限制

在下述版本驗證通過:

  • DevEco Studio: 4.1 Canary(4.1.3.317), SDK: API11 (4.1.0.36)
  • DevEco Studio: 4.0 (4.0.3.512), SDK: API10 (4.0.10.9)
  • DevEco Studio: 4.0 Canary2(4.0.3.300), SDK: API10 (4.0.8.6)

寫在最后

如果你覺得這篇內(nèi)容對你還蠻有幫助学赛,我想邀請你幫我三個小忙

  • 點贊,轉(zhuǎn)發(fā)吞杭,有你們的 『點贊和評論』盏浇,才是我創(chuàng)造的動力。
  • 關(guān)注小編芽狗,同時可以期待后續(xù)文章ing??绢掰,不定期分享原創(chuàng)知識。
  • 想要獲取更多完整鴻蒙最新學(xué)習(xí)知識點童擎,請移步前往小編:https://gitee.com/MNxiaona/733GH/blob/master/jianshu
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滴劲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子顾复,更是在濱河造成了極大的恐慌班挖,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芯砸,死亡現(xiàn)場離奇詭異萧芙,居然都是意外死亡,警方通過查閱死者的電腦和手機假丧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門双揪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人包帚,你說我怎么就攤上這事渔期。” “怎么了渴邦?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵疯趟,是天一觀的道長。 經(jīng)常有香客問我几莽,道長迅办,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任章蚣,我火速辦了婚禮站欺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纤垂。我一直安慰自己矾策,他們只是感情好,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布峭沦。 她就那樣靜靜地躺著贾虽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吼鱼。 梳的紋絲不亂的頭發(fā)上蓬豁,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天绰咽,我揣著相機與錄音,去河邊找鬼地粪。 笑死取募,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蟆技。 我是一名探鬼主播玩敏,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼质礼!你這毒婦竟也來了旺聚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤眶蕉,失蹤者是張志新(化名)和其女友劉穎砰粹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妻坝,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡伸眶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了刽宪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厘贼。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖圣拄,靈堂內(nèi)的尸體忽然破棺而出嘴秸,到底是詐尸還是另有隱情,我是刑警寧澤庇谆,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布岳掐,位于F島的核電站,受9級特大地震影響饭耳,放射性物質(zhì)發(fā)生泄漏串述。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一寞肖、第九天 我趴在偏房一處隱蔽的房頂上張望纲酗。 院中可真熱鬧,春花似錦新蟆、人聲如沸觅赊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吮螺。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸠补,已是汗流浹背萝风。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留紫岩,地道東北人闹丐。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像被因,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子衫仑,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容