在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ArkUI開發(fā)框架的動畫能力

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-06-17 11:44 ? 次閱讀

動畫是 UI 界面的重要元素之一,精心設(shè)計的動畫能使 UI 界面更直觀,有助于改進(jìn)應(yīng)用程序的外觀并改善用戶體驗。

ArkUI 開發(fā)框架為開發(fā)者提供了豐富的動畫能力,如屬性動畫、轉(zhuǎn)場動畫及自定義動畫等。這些動畫能力幫助開發(fā)者美化了 UI 界面,但不適用于繪制某些比較復(fù)雜的動畫,例如,屬性動畫主要針對動畫的通用屬性進(jìn)行動態(tài)變化,內(nèi)容動效不夠豐富,且變更時需要修改或重寫代碼;Gif 動態(tài)圖放大后鋸齒明顯,精度越高占用存儲空間越大,直接影響安裝包的大小;svg 動畫 DOM 節(jié)點多開銷大,缺乏與用戶的交互。因此,我們引入了比較成熟的 Lottie 組件,提升了 ArkUI 開發(fā)框架的動畫能力。

1. Lottie介紹

Lottie 組件效果如下所示:

1.1 什么是Lottie?

Lottie 是一款能夠為應(yīng)用添加動畫的開源組件,它可以解析 AE(After Effects)導(dǎo)出的 json 文件,讓復(fù)雜的動畫資源輕松運行在應(yīng)用程序中。如圖 1 所示,動畫文件通過 AE 的 bodymovin 插件轉(zhuǎn)換成通用的 json 格式描述文件后,應(yīng)用開發(fā)者只需使用 Lottie 解析 json 文件,就能將動畫繪制出來。

c3d43884-d83e-11ec-ba43-dac502259ad0.png

圖1 整體流程

1.2 Lottie繪制流程

Lottie 解析 json 格式的動畫描述文件后,會基于 canvas 畫布進(jìn)行 2D 渲染,并結(jié)合原生組件 Animator 實現(xiàn)動畫效果。具體繪制流程如下圖 2 所示:

c3ff2f4e-d83e-11ec-ba43-dac502259ad0.png

圖2 lottie繪制流程

1.動畫加載準(zhǔn)備,在使用 Lottie 加載動畫前需先通過插件 bodymovin 將 AE 生成的動畫文件轉(zhuǎn)換為通用的 json 格式描述文件。開發(fā)者也可以從互聯(lián)網(wǎng)獲取合適的動畫資源直接應(yīng)用, 比如:

https://lottiefiles.com/https://lottiefiles.com/https://lottiefiles.com/

2. 獲取 json 文件中的動畫數(shù)據(jù)。

3. 解析 json 文件中的動畫數(shù)據(jù)。

4. 創(chuàng)建動畫實例,設(shè)置動畫信息

5. 初始化布局寬高,設(shè)置繪制樣式等信息。

6. 啟動動畫,觸發(fā)逐幀繪制。

7. 更新動畫進(jìn)度。

8. 返回動畫實例,通過 loadAnimation() 接口返回動畫實例 AnimationItem。

9. 控制動畫,Lottie 提供了一整套簡潔易用 API,如停止 stop()、暫停 pause()、播放 play()、播放流轉(zhuǎn) togglePause()、方向 setDirection()、速度 setSpeed() 等。

1.3 Lottie優(yōu)點

通過上文的介紹,我們可以總結(jié)出 Lottie 的以下優(yōu)點:

1. 只需使用 Lottie 解析 json 文件就能實現(xiàn)動畫的加載,基本上實現(xiàn)了 0 代碼開發(fā)。

2. 應(yīng)用開發(fā)者可以通過修改 json 文件的參數(shù),將動畫運行到不同的應(yīng)用程序中,實現(xiàn)動畫的一次設(shè)計多端使用。

3. 應(yīng)用開發(fā)者可從網(wǎng)絡(luò)直接下載 json 文件,實時更新動畫資源。

4. Lottie 基于 canvas 畫布進(jìn)行基礎(chǔ)的 2D 渲染,讓動畫流暢度更高。

5. Lottie 可以將 UX 設(shè)計師給出的復(fù)雜動畫效果 100% 還原到應(yīng)用程序中 。

6. Lottie 提供了豐富的 API,讓開發(fā)者能輕松控制動畫,大大提高了開發(fā)效率。

2. Lottie實戰(zhàn)

通過上文對 Lottie 的介紹,相信很多小伙伴已經(jīng)感受到了 Lottie 組件的強(qiáng)大,下面我們將通過一個簡單的動畫示例來為大家展示 ArkUI 開發(fā)框架中 Lottie 組件的使用。

2.1 創(chuàng)建項目

如圖 3 所示,在 DevEco Studio 中新建 Lottis_Test 項目,項目類型選擇 Application,語言選擇 eTS,點擊 Finish 完成創(chuàng)建。

c42a2d2a-d83e-11ec-ba43-dac502259ad0.png

圖3 創(chuàng)建工程

2.2 添加依賴

成功創(chuàng)建項目后,接下來就是將 Lottie 組件下載至項目中。首先,我們需找到 npm 配置文件,并在 .npmrc 配置文件中添加 @ohos 的 scope 倉庫地址:@ohos:registry=https://repo.harmonyos.com/npm/,如圖 4 的 scope 倉庫地址:@ohos:registry=https://repo.harmonyos.com/npm/,如圖 4 的 scope 倉庫地址:@ohos:registry=https://repo.harmonyos.com/npm/,如圖 4 所示:

c45d204a-d83e-11ec-ba43-dac502259ad0.png

圖4 指定npm倉庫地址

配置好 npm 倉庫地址后,如圖 5 所示,在 DevEco Studio 的底部導(dǎo)航欄,點擊“Terminal”(快捷鍵 Alt+F12), 鍵入命令:npm install @ohos/lottie-ohos-ets 并回車,此時 Lottie 組件會自動下載至項目中。下載完成后工程根目錄下會生成 node_modules/@ohos/lottie-ohos-etsnode_modules/@ohos/lottie-ohos-etsnode_modules/@ohos/lottie-ohos-ets 目錄。

c49aef6a-d83e-11ec-ba43-dac502259ad0.png

圖5 下載lottie

2.3 導(dǎo)出動畫資源并保存

將 After Effects 導(dǎo)出的 json 動畫資源文件保存到項目中,保存路徑如下:entry/src/main/ets/MainAbility/common/lottie/animation.json

c4e600a4-d83e-11ec-ba43-dac502259ad0.png

圖6 json保存路徑

2.4 編寫邏輯代碼

使用擴(kuò)展的 TS 語言在工程的 index.ets 文件中編寫業(yè)務(wù)邏輯代碼 ,為了兼顧資源的及時釋放,在組件 @Component 聲明內(nèi)的聲明周期 onDisappear() 或 onPageHide() 中調(diào)用 lottie.destory() 釋放資源。示例代碼如下所示:
import lottie from 'lottie-ohos-ets'

@Entry@Componentstruct Index {  private controller: RenderingContext = new RenderingContext();// 動畫別名  private animateName: string = "animation";// 動畫資源相對路徑  private animatePath: string = "common/lottie/animation.json";  private onPageHide(): void {    // 隨頁面隱藏銷毀動畫    lottie.destroy();  }  build() {    Column() {      // 聲明Animator與Canvas組件      Animator('__lottie_ets')      Canvas(this.controller)        .width('30%')        .height('20%')        .backgroundColor('#ff0000')        .onAppear(() => {          // 隨Canvas布局自動加載動畫          let anim = lottie.loadAnimation({            container: this.controller,            renderer: 'canvas',            loop: true,            autoplay: true,            name: this.animateName,            path: this.animatePath          })        })      Button('togglePause')        .onClick(() => {          // 聲明button按鍵與設(shè)置點擊事件,通過點擊控制動畫暫停與播放的切換          lottie.togglePause(this.animateName);        })    }    .width('100%')    .height('100%')  }}
以上就是 ArkUI 開發(fā)框架中 Lottie 組件的使用,希望廣大開發(fā)者能利用這個強(qiáng)大的開源組件開發(fā)出更多精美的應(yīng)用。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    403

    瀏覽量

    17502
  • lottie
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    19798

原文標(biāo)題:OpenHarmony支持Lottie組件,讓動畫繪制更簡單

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    學(xué)習(xí)鴻蒙必須要知道的幾個名詞

    HarmonyOS提供了一套UI(UserInterface,用戶界面)開發(fā)框架,即方舟開發(fā)框架ArkUI
    的頭像 發(fā)表于 07-06 08:04 ?427次閱讀
    學(xué)習(xí)鴻蒙必須要知道的幾個名詞

    鴻蒙開發(fā)ArkUI-X基礎(chǔ)知識:【ArkUI代碼工程及構(gòu)建介紹】

    ArkUI作為OpenHarmony的默認(rèn)開發(fā)框架,在本項目(ArkUI-X)中需要做到一套代碼同時支持多平臺構(gòu)建,所以會采取共倉開發(fā)的方式
    的頭像 發(fā)表于 05-25 16:45 ?2096次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b><b class='flag-5'>ArkUI</b>-X基礎(chǔ)知識:【<b class='flag-5'>ArkUI</b>代碼工程及構(gòu)建介紹】

    鴻蒙開發(fā)ArkUI-X基礎(chǔ)知識:【ArkUI跨平臺設(shè)計總體說明】

    本文檔描述ArkUI開發(fā)框架跨平臺運行能力相關(guān)的總體技術(shù)方案。
    的頭像 發(fā)表于 05-24 15:41 ?1558次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b><b class='flag-5'>ArkUI</b>-X基礎(chǔ)知識:【<b class='flag-5'>ArkUI</b>跨平臺設(shè)計總體說明】

    鴻蒙ArkUI-X框架開發(fā):【開發(fā)準(zhǔn)備】

    本文檔適用于ArkUI-X框架開發(fā)的初學(xué)者。通過環(huán)境搭建、代碼下載、代碼編譯、API擴(kuò)展和使用,快速了解跨平臺項目開發(fā)流程。
    的頭像 發(fā)表于 05-23 21:02 ?477次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>-X<b class='flag-5'>框架開發(fā)</b>:【<b class='flag-5'>開發(fā)</b>準(zhǔn)備】

    鴻蒙ArkUI-X跨平臺開發(fā):【SDK目錄結(jié)構(gòu)介紹】

    本文檔配套ArkUI-X,將OpenHarmony ArkUI開發(fā)框架擴(kuò)展到不同的OS平臺,比如Android和iOS平臺,讓開發(fā)者基于
    的頭像 發(fā)表于 05-20 16:28 ?823次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>-X跨平臺<b class='flag-5'>開發(fā)</b>:【SDK目錄結(jié)構(gòu)介紹】

    鴻蒙ArkUI-X跨平臺開發(fā):【 應(yīng)用工程結(jié)構(gòu)說明】

    本文檔配套ArkUI-X,將OpenHarmony ArkUI開發(fā)框架擴(kuò)展到不同的OS平臺,比如Android和iOS平臺,讓開發(fā)者基于
    的頭像 發(fā)表于 05-19 21:05 ?598次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>-X跨平臺<b class='flag-5'>開發(fā)</b>:【 應(yīng)用工程結(jié)構(gòu)說明】

    HarmonyOS開發(fā)案例:【購物車app】

    OpenHarmony ArkUI框架提供了豐富的動畫組件和接口,開發(fā)者可以根據(jù)實際場景和開發(fā)需求,選用豐富的
    的頭像 發(fā)表于 05-14 18:19 ?1081次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>案例:【購物車app】

    鴻蒙跨平臺框架:【ArkUi-X】創(chuàng)建工程

    鴻蒙推出了鴻ArkUi-X 框架所以就寫個文章分享一下
    的頭像 發(fā)表于 05-13 17:48 ?965次閱讀
    鴻蒙跨平臺<b class='flag-5'>框架</b>:【<b class='flag-5'>ArkUi</b>-X】創(chuàng)建工程

    鴻蒙ArkUI:【從代碼到UI顯示的整體渲染流程】

    方舟開發(fā)框架(簡稱ArkUI)是鴻蒙開發(fā)的UI框架,提供如下兩種開發(fā)范式,我們 **只學(xué)聲明式
    的頭像 發(fā)表于 05-13 16:06 ?939次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>:【從代碼到UI顯示的整體渲染流程】

    鴻蒙開發(fā)學(xué)習(xí):初探【ArkUI-X】

    **簡單來說,ArkTS + ArkUI-X 對標(biāo)的框架為 flutter,一次代碼,編譯為 native 全平臺運行**
    的頭像 發(fā)表于 05-13 15:58 ?1045次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b>學(xué)習(xí):初探【<b class='flag-5'>ArkUI</b>-X】

    OpenHarmony實戰(zhàn)開發(fā)-如何實現(xiàn)組件動畫

    ArkUI為組件提供了通用的屬性動畫和轉(zhuǎn)場動畫能力的同時,還為一些組件提供了默認(rèn)的動畫效果。例如,List的滑動動效,Button的點擊動效
    的頭像 發(fā)表于 04-28 15:49 ?639次閱讀
    OpenHarmony實戰(zhàn)<b class='flag-5'>開發(fā)</b>-如何實現(xiàn)組件<b class='flag-5'>動畫</b>。

    鴻蒙ArkUI開發(fā)學(xué)習(xí):【渲染控制語法】

    ArkUI開發(fā)框架是一套構(gòu)建 HarmonyOS / OpenHarmony 應(yīng)用界面的聲明式UI開發(fā)框架,它支持程序使用?`if/else
    的頭像 發(fā)表于 04-09 16:40 ?1008次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b><b class='flag-5'>開發(fā)</b>學(xué)習(xí):【渲染控制語法】

    鴻蒙開發(fā)之發(fā)動畫

    FPS(Frame Per Second),即每秒的動畫幀數(shù),幀率越高則動畫就會越流暢。 ArkUI中,產(chǎn)生動畫的方式是改變屬性值且指定動畫
    的頭像 發(fā)表于 02-01 15:25 ?639次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b>之發(fā)<b class='flag-5'>動畫</b>篇

    鴻蒙ArkUI開發(fā)-Tabs組件的使用

    鴻蒙ArkUI開發(fā)-Tabs組件的使用
    的頭像 發(fā)表于 01-19 16:01 ?1927次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b><b class='flag-5'>開發(fā)</b>-Tabs組件的使用

    鴻蒙開發(fā)-ArkUI框架實戰(zhàn)【日歷應(yīng)用 】

    :eTS 關(guān)于eTS eTS語言:基于TypeScript(簡稱TS)拓展的出來的,是OpenHarmony應(yīng)用開發(fā)語言,使用ArkUI框架提供的組件進(jìn)行界面開發(fā)。 什么是TypeSc
    發(fā)表于 01-17 21:37
    主站蜘蛛池模板: 波多久久夜色精品国产| 天天操夜夜嗨| 美女视频黄a全部| 久久综合久久精品| 国产视频三级| 5月丁香婷婷| 天天插天天干天天射| 久久天天丁香婷婷中文字幕| 国产午夜久久影院| 七月色婷婷| 五月婷婷综合激情| 色宅男看片午夜大片免费看| 三级黄色免费| 久久这里只有精品1| 搞逼综合网| 美女视频很黄很a免费国产| 黄色在线视频免费看| 成年人一级毛片| 天天黄色| 操一操日一日| 亚洲欧美综合一区二区三区四区| 欧美777| 在线观看免费午夜大片| 在线观看亚洲一区二区| 在线黄色免费网站| 一区不卡在线观看| 国产一区二区三区夜色| 特级全黄一级毛片视频| 男人的天堂久久精品激情| 色综合天天色| 九色在线| 午夜在线观看视频在线播放版| 免费视频播放| 在线二区| 亚洲天堂免费| 免费一级欧美片片线观看| 国产产一区二区三区久久毛片国语| 久久成人免费网站| 亚洲激情综合| 啪啪网免费| 欲色影视香色天天影视来|