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

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

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

Lottie組件提升ArkUI開發(fā)框架的動畫能力

HarmonyOS開發(fā)者 ? 來源:HarmonyOS開發(fā)者 ? 作者:HarmonyOS開發(fā)者 ? 2022-02-25 13:16 ? 次閱讀

動畫是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é)點(diǎn)多開銷大,缺乏與用戶的交互。因此,我們引入了比較成熟的Lottie組件,提升了ArkUI開發(fā)框架的動畫能力。

一、Lottie介紹

1 什么是Lottie?

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

Lottie組件提升ArkUI開發(fā)框架的動畫能力

圖1 整體流程

2 Lottie繪制流程

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

Lottie組件提升ArkUI開發(fā)框架的動畫能力

圖2 lottie繪制流程

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

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

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

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

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

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

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

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

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

3 Lottie優(yōu)點(diǎn)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

二、Lottie實戰(zhàn)

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

1 創(chuàng)建項目

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

Lottie組件提升ArkUI開發(fā)框架的動畫能力

圖3 創(chuàng)建工程

2 添加依賴

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

Lottie組件提升ArkUI開發(fā)框架的動畫能力? ???

圖4 指定npm倉庫地址

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

Lottie組件提升ArkUI開發(fā)框架的動畫能力

圖5 下載Lottie組件

注:由于目前l(fā)ottie組件正在開源準(zhǔn)備中,@ohos/lottie-ohos-ets倉庫預(yù)計在3月底發(fā)布,敬請期待。

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

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

Lottie組件提升ArkUI開發(fā)框架的動畫能力

圖6 json保存路徑

4 編寫邏輯代碼

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

importlottiefrom'@ohos/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è)置點(diǎn)擊事件,通過點(diǎn)擊控制動畫暫停與播放的切換          lottie.togglePause(this.animateName);        })    }    .width('100%')    .height('100%')  }}

(左右滑動,查看更多)

以上就是ArkUI開發(fā)框架中Lottie組件的使用,希望廣大開發(fā)者能利用這個強(qiáng)大的開源組件開發(fā)出更多精美的應(yīng)用。

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

文章出處:【微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅


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

    關(guān)注

    0

    文章

    59

    瀏覽量

    15762
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3529

    瀏覽量

    43268
  • lottie
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    19898

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

文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    HarmonyOS Lottie組件,讓動畫繪制更簡單

    存儲空間越大,直接影響安裝包的大??;svg動畫DOM節(jié)點(diǎn)多開銷大,缺乏與用戶的交互。 因此,我們引入了比較成熟的Lottie組件提升ArkUI
    發(fā)表于 02-22 14:55

    OpenHarmony 3.1 Release版本關(guān)鍵特性解析——ArkUI框架又有哪些新增能力?

    (以下簡稱 v3.1)版本的發(fā)布,ArkUI 框架也增加了許多新能力,接下來一起看看都有哪些新增能力吧。ArkUI
    發(fā)表于 05-31 18:05

    HDD杭州站?ArkUI開發(fā)更靈活

    HTML5頁面加載特性。 UI開發(fā)效率提升:在交互歸一、多態(tài)樣式自定義、工具鏈體驗等方面進(jìn)行了增強(qiáng)和提升,讓開發(fā)更靈活。 圖1 ArkUI
    發(fā)表于 08-05 11:33

    ArkUI框架,更懂程序員的UI信息語法

    支持判斷分屏狀態(tài)、折疊屏展開狀態(tài)等,這樣就解決了我一次開發(fā)多端部署的難題。 同時,ArkUI框架開發(fā)者提供了多態(tài)組件,同一控件在不同的設(shè)備
    發(fā)表于 12-14 11:23

    4天帶你上手HarmonyOS ArkUI開發(fā)——《HarmonyOS ArkUI入門訓(xùn)練營之健康生活實戰(zhàn)》

    框架組件用法,完成一款健康飲食應(yīng)用的界面開發(fā),結(jié)合DevEco Studio提供的多設(shè)備預(yù)覽能力,體驗ArkUI
    發(fā)表于 01-05 11:49

    ArkUI能力,助力應(yīng)用開發(fā)更便捷

    ArkUI是一套構(gòu)建分布式應(yīng)用的聲明式UI開發(fā)框架。它具備簡潔自然的UI信息語法、豐富的UI組件、多維的狀態(tài)管理,以及實時界面預(yù)覽等相關(guān)能力
    發(fā)表于 02-15 11:40

    OpenHarmony應(yīng)用開發(fā)-ArkUI方舟開發(fā)框架簡析

    方舟開發(fā)框架(簡稱ArkUI)為OpenHarmony應(yīng)用的UI開發(fā)提供了完整的基礎(chǔ)設(shè)施,包括簡潔的UI語法、豐富的UI功能(組件、布局、
    發(fā)表于 04-23 09:35

    一文詳細(xì)了解ArkUI框架新增能力

    ArkUI是一套UI開發(fā)框架,它提供了開發(fā)者進(jìn)行應(yīng)用UI開發(fā)時所必須的能力。隨著OpenHarm
    的頭像 發(fā)表于 04-27 13:44 ?1684次閱讀
    一文詳細(xì)了解<b class='flag-5'>ArkUI</b><b class='flag-5'>框架</b>新增<b class='flag-5'>能力</b>

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

    動畫加載準(zhǔn)備,在使用 Lottie 加載動畫前需先通過插件 bodymovin 將 AE 生成的動畫文件轉(zhuǎn)換為通用的 json 格式描述文件。開發(fā)
    的頭像 發(fā)表于 06-17 11:44 ?1689次閱讀

    Lottie移動應(yīng)用動畫效果框架

    ./oschina_soft/lottie-android.zip
    發(fā)表于 06-24 14:25 ?1次下載
    <b class='flag-5'>Lottie</b>移動應(yīng)用<b class='flag-5'>動畫</b>效果<b class='flag-5'>框架</b>

    ArkUI,更高效的框架設(shè)計

    上期文章我們講到了ArkUI的三大特性,同時提到了ArkUI是一套用于構(gòu)建HarmonyOS應(yīng)用界面的UI開發(fā)框架,本期我們將從架構(gòu)設(shè)計上來聊聊Ar
    的頭像 發(fā)表于 12-21 09:15 ?1841次閱讀

    ArkUI能力,助力應(yīng)用開發(fā)更便捷

    管理,以及實時界面預(yù)覽等相關(guān)能力,幫助您提升應(yīng)用開發(fā)效率,并能在多種設(shè)備上實現(xiàn)生動而流暢的用戶體驗。隨著HarmonyOS 3.1版本的發(fā)布,ArkUI也新增許多
    的頭像 發(fā)表于 02-15 16:35 ?980次閱讀

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

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

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

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

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品