衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Lottie組件提升ArkUI開發框架的動畫能力

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

動畫是UI界面的重要元素之一,精心設計的動畫能使UI界面更直觀,有助于改進應用程序的外觀并改善用戶體驗。

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

一、Lottie介紹

1 什么是Lottie?

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

Lottie組件提升ArkUI開發框架的動畫能力

圖1 整體流程

2 Lottie繪制流程

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

Lottie組件提升ArkUI開發框架的動畫能力

圖2 lottie繪制流程

動畫加載準備,在使用Lottie加載動畫前需先通過插件 bodymovin 將AE生成的動畫文件轉換為通用的 json 格式描述文件。開發者也可以從互聯網獲取合適的動畫資源直接應用。

獲取json文件中的動畫數據。

解析json文件中的動畫數據。

創建動畫實例,設置動畫信息

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

啟動動畫,觸發逐幀繪制。

更新動畫進度。

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

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

3 Lottie優點

通過上文的介紹,我們可以總結出Lottie的以下優點:

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

應用開發者可以通過修改json文件的參數,將動畫運行到不同的應用程序中,實現動畫的一次設計多端使用。

應用開發者可從網絡直接下載json文件,實時更新動畫資源。

Lottie基于canvas 畫布進行基礎的2D渲染,讓動畫流暢度更高。

Lottie可以將UX設計師給出的復雜動畫效果100%還原到應用程序中 。

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

通過上文的介紹,我們可以總結出Lottie的以下優點:

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

應用開發者可以通過修改json文件的參數,將動畫運行到不同的應用程序中,實現動畫的一次設計多端使用。

應用開發者可從網絡直接下載json文件,實時更新動畫資源。

Lottie基于canvas 畫布進行基礎的2D渲染,讓動畫流暢度更高。

Lottie可以將UX設計師給出的復雜動畫效果100%還原到應用程序中 。

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

二、Lottie實戰

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

1 創建項目

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

Lottie組件提升ArkUI開發框架的動畫能力

圖3 創建工程

2 添加依賴

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

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

圖4 指定npm倉庫地址

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

Lottie組件提升ArkUI開發框架的動畫能力

圖5 下載Lottie組件

注:由于目前lottie組件正在開源準備中,@ohos/lottie-ohos-ets倉庫預計在3月底發布,敬請期待。

3 導出動畫資源并保存

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

Lottie組件提升ArkUI開發框架的動畫能力

圖6 json保存路徑

4 編寫邏輯代碼

使用擴展的TS語言在工程的index.ets文件中編寫業務邏輯代碼 ,為了兼顧資源的及時釋放,在組件@Component聲明內的聲明周期onDisappear()或onPageHide()中調用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按鍵與設置點擊事件,通過點擊控制動畫暫停與播放的切換          lottie.togglePause(this.animateName);        })    }    .width('100%')    .height('100%')  }}

(左右滑動,查看更多)

以上就是ArkUI開發框架中Lottie組件的使用,希望廣大開發者能利用這個強大的開源組件開發出更多精美的應用。

原文標題:Lottie組件,讓動畫繪制更簡單

文章出處:【微信公眾號:HarmonyOS開發者】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 界面
    +關注

    關注

    0

    文章

    59

    瀏覽量

    15663
  • 開源
    +關注

    關注

    3

    文章

    3402

    瀏覽量

    42711
  • lottie
    +關注

    關注

    0

    文章

    4

    瀏覽量

    19824

原文標題:Lottie組件,讓動畫繪制更簡單

文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發案例:【購物車app】

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

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

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

    OpenHarmony 3.1 Release版本關鍵特性解析——ArkUI框架又有哪些新增能力

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

    HDD杭州站?ArkUI開發更靈活

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

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

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

    4天帶你上手HarmonyOS ArkUI開發——《HarmonyOS ArkUI入門訓練營之健康生活實戰》

    框架組件用法,完成一款健康飲食應用的界面開發,結合DevEco Studio提供的多設備預覽能力,體驗ArkUI
    發表于 01-05 11:49

    ArkUI能力,助力應用開發更便捷

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

    OpenHarmony應用開發-ArkUI方舟開發框架簡析

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

    一文詳細了解ArkUI框架新增能力

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

    ArkUI開發框架動畫能力

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

    Lottie移動應用動畫效果框架

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

    ArkUI,更高效的框架設計

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

    ArkUI能力,助力應用開發更便捷

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

    鴻蒙ArkUI開發-Tabs組件的使用

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

    OpenHarmony實戰開發-如何實現組件動畫

    ArkUI組件提供了通用的屬性動畫和轉場動畫能力的同時,還為一些組件提供了默認的
    的頭像 發表于 04-28 15:49 ?674次閱讀
    OpenHarmony實戰<b class='flag-5'>開發</b>-如何實現<b class='flag-5'>組件</b><b class='flag-5'>動畫</b>。
    免费百家乐官网倍投软件| 大世界百家乐的玩法技巧和规则| 战神国际娱乐平| 顶尖百家乐开户| 大邑县| 可以玩百家乐的博彩网站| 台江县| 百家乐赌场娱乐城| 百家乐官网投注平台| 百家乐象棋赌博| 百家乐官网代理商博彩e族| 高尔夫百家乐的玩法技巧和规则 | 黎城县| 百家乐官网网上真钱娱乐平台 | 百家乐手机壳| 百家乐官网怎么玩最保险| 德州扑克葫芦| 博联百家乐游戏| 百家乐官网技巧之写路| 百家乐群的微博| 电子百家乐官网假在线哪| 澳门顶级赌场手机版| 百家乐赢的方法| 百家乐官网胜率在哪| 百家乐侧牌器| 免费百家乐官网在线| 大发888真人娱乐场游戏平台 | 利来国际娱乐| 大世界百家乐娱乐平台| 百家乐官网桌子北京| bet365 网址| 新澳博百家乐现金网| 百家乐官网天下第一庄| 立博博彩| 天天百家乐的玩法技巧和规则| 最佳场百家乐官网的玩法技巧和规则| 南木林县| 太阳百家乐3d博彩通| 百家乐官网开过的路纸| 体育博彩| G3百家乐的玩法技巧和规则 |