接觸鴻蒙 + 下拉刷新

最近在開(kāi)視頻時(shí), 經(jīng)惩缰看到鴻蒙純血相關(guān)標(biāo)題, 就搜索了下鴻蒙教學(xué), 隨便找一個(gè)免費(fèi)視頻課程, 就開(kāi)始了學(xué)習(xí)

一開(kāi)始, 先了解語(yǔ)言特性, 鴻蒙是TS作為開(kāi)發(fā)語(yǔ)言, 恰好之前接觸過(guò)一些js和ts. 還算熟悉. 然后就是看UI組件了, 先了解下如何繪制UI, 這樣可以最快動(dòng)手, 提高成就感.

上官網(wǎng), 下載編輯器, SDK, 配置好以后, 就可以開(kāi)始著手按照教程中去繪制UI了. 教程只涉及了一部分, 剩下的, 就需要去官網(wǎng)上查看了 Ui 組件文檔

這里可以查看所有的鴻蒙系統(tǒng)UI組件, 他們基本涵蓋了所有需要的種類(lèi). 有demo, 有效果圖, 很清晰.

了解布局方式, 布局方式, 跟H5的很詳細(xì), H5也跟Flutter相似, Android的xml布局方式也相似, 如果做過(guò)其中一種, 都可以很快上手了解, 布局主要就是線性方式. 在一個(gè)方向上, 挨個(gè)排列各個(gè)組件. 再某一行再更換排列方式. Row橫向/Column豎向/Stack重疊, 這三個(gè)基本滿足了大部分, 其余的, 就再去官網(wǎng)查看

此時(shí), 可以在單一文件中, 繪制所期望的UI了. 但是做開(kāi)發(fā), 就會(huì)遇到面向?qū)ο? 需要抽取一些公共組件, 這時(shí)候需要學(xué)習(xí), 如何創(chuàng)建一個(gè)可以復(fù)用的公共組件, 容器組件文檔

使用@Builder, 才可以把組件單獨(dú)抽離成一個(gè)方法.

使用@Component, 才可以把組件單獨(dú)抽離到一個(gè)類(lèi)中.

ArkTs中, UI使用的是結(jié)構(gòu)體Struct, 而非類(lèi)Class. 邏輯部分使用的才是類(lèi).

UI繪制OK后, 就是網(wǎng)絡(luò)通信.

ark也內(nèi)置了http.

在單獨(dú)的類(lèi)中使用http. 可以請(qǐng)求接口, 并異步收到返回值.

這時(shí)候, 就該了解UI組件的生命周期, 在哪里調(diào)用網(wǎng)絡(luò)請(qǐng)求. 如何更新UI. 使用狀態(tài)管理@State 其余的@Prop / @Link, 在需要的時(shí)候 , 去看看文檔, 如何使用就可以了.


基本的開(kāi)發(fā)似乎沒(méi)有阻礙了. 想在鴻蒙里, 復(fù)刻一些, 之前常用的組件效果.

1. Btn按下時(shí), 按鈕透明度下降

首先自定義一個(gè)組件 @Component export struct BaseBtn

在組件中定義一個(gè)狀態(tài)值 @State opacity:number = 1

在組件中, 定義一個(gè)傳入組件 @BuilderParam child: () => void 還要給他賦一個(gè)默認(rèn)值哦

然后就是設(shè)置opacity / onTouch 方法. 在touch.Down時(shí), 讓opacity變?yōu)?.3. touch.Up時(shí), 改為1.

但是效果發(fā)現(xiàn)很生硬, 需要加入動(dòng)畫(huà). 就需要animation方法, 來(lái)配置了, 需要注意,animation 需要放在最后, 放在前面的話, 他后面設(shè)置的屬性不會(huì)生效.

2. ListView下拉刷新

系統(tǒng)自帶一個(gè) Refresh 組件, 但是這個(gè)只能是下拉該組件時(shí)觸發(fā). 跟常見(jiàn)的feed列表下拉刷新并不相似.

由于是feed, 所以是很多數(shù)據(jù), 需要一個(gè)長(zhǎng)列表來(lái)顯示數(shù)據(jù), 就需要用到List

List里需要使用ListItem

像是iOS和Android中, ListView都是通過(guò)delegate回調(diào), 來(lái)設(shè)置總共的數(shù)量, 然后有有一個(gè)繪制每個(gè)item的函數(shù).

但是ArkTs中不是, 他只能通過(guò) ForEach來(lái)循環(huán)繪制.

所以在List的第一個(gè)元素, 放置一個(gè)高度為X的TopView. 這個(gè)View, 就是 '下拉刷新' / '松開(kāi)刷新' 的提示組件

之后再用ForEach來(lái)循環(huán)遍歷其余View.

設(shè)置List的onScroll 方法, 通過(guò)該方法, 可以知道現(xiàn)在Y軸上的偏移量, 當(dāng)偏移小于0時(shí), 表示已經(jīng)下拉到極限, 出現(xiàn)了拉扯動(dòng)作, 此時(shí), 希望上方出現(xiàn) "下拉刷新" 的提示.

那就可以根據(jù)Y軸的偏移, 來(lái)讓頂部TopView的高度改變, 從0到50. 這樣, 在下拉的途中, 這個(gè)組件會(huì)逐步顯示出來(lái), 僅僅修改高度, 可能比較生硬, 再加上透明度, 就會(huì)好很多.

在下拉到一定程度后, 修改提示文字為 "松手刷新". 也只需要根據(jù)Y的偏移 小于多少后, 就替換文字內(nèi)容

在松手后, 需要將Text組件, 替換為L(zhǎng)oadingView, 并且高度維持在50.

這時(shí), 需要實(shí)現(xiàn) onTouch方法, 這個(gè)方法, 可以得到手勢(shì)抬起的事件, 當(dāng)抬起時(shí), 判斷Y的偏移是否達(dá)到要求, 當(dāng)松手時(shí), 超過(guò)了刷新閾值, 那就讓UI顯示為loadingview, 并且觸發(fā)加載回調(diào)函數(shù). 待回調(diào)函數(shù)執(zhí)行完畢后, 將TopView的高度設(shè)置為0


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末合蔽,一起剝皮案震驚了整個(gè)濱河市怀骤,隨后出現(xiàn)的幾起案子费封,更是在濱河造成了極大的恐慌,老刑警劉巖蒋伦,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弓摘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡痕届,警方通過(guò)查閱死者的電腦和手機(jī)韧献,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)研叫,“玉大人锤窑,你說(shuō)我怎么就攤上這事±镀玻” “怎么了果复?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵陈莽,是天一觀的道長(zhǎng)渤昌。 經(jīng)常有香客問(wèn)我,道長(zhǎng)走搁,這世上最難降的妖魔是什么独柑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮私植,結(jié)果婚禮上忌栅,老公的妹妹穿的比我還像新娘。我一直安慰自己曲稼,他們只是感情好索绪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著贫悄,像睡著了一般瑞驱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窄坦,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天唤反,我揣著相機(jī)與錄音,去河邊找鬼鸭津。 笑死彤侍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逆趋。 我是一名探鬼主播盏阶,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼闻书!你這毒婦竟也來(lái)了名斟?” 一聲冷哼從身側(cè)響起吴汪,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒸眠,沒(méi)想到半個(gè)月后漾橙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡楞卡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年霜运,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒋腮。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淘捡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出池摧,到底是詐尸還是另有隱情焦除,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布作彤,位于F島的核電站膘魄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏竭讳。R本人自食惡果不足惜创葡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绢慢。 院中可真熱鬧灿渴,春花似錦、人聲如沸胰舆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缚窿。三九已至棘幸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滨攻,已是汗流浹背够话。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留光绕,地道東北人女嘲。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像诞帐,于是被迫代替她去往敵國(guó)和親欣尼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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