吴忠躺衫网络科技有限公司

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

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

3天內不再提示

ArkUI開發框架的動畫能力

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

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

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

1. Lottie介紹

Lottie 組件效果如下所示:

1.1 什么是Lottie?

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

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

圖1 整體流程

1.2 Lottie繪制流程

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

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

圖2 lottie繪制流程

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

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

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

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

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

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

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

7. 更新動畫進度。

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

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

1.3 Lottie優點

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

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

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

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

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

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

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

2. Lottie實戰

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

2.1 創建項目

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

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

圖3 創建工程

2.2 添加依賴

成功創建項目后,接下來就是將 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 的底部導航欄,點擊“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 導出動畫資源并保存

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

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

圖6 json保存路徑

2.4 編寫邏輯代碼

使用擴展的 TS 語言在工程的 index.ets 文件中編寫業務邏輯代碼 ,為了兼顧資源的及時釋放,在組件 @Component 聲明內的聲明周期 onDisappear() 或 onPageHide() 中調用 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按鍵與設置點擊事件,通過點擊控制動畫暫停與播放的切換          lottie.togglePause(this.animateName);        })    }    .width('100%')    .height('100%')  }}
以上就是 ArkUI 開發框架中 Lottie 組件的使用,希望廣大開發者能利用這個強大的開源組件開發出更多精美的應用。

審核編輯 :李倩


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

    關注

    0

    文章

    403

    瀏覽量

    17543
  • lottie
    +關注

    關注

    0

    文章

    4

    瀏覽量

    19824

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

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

收藏 人收藏

    評論

    相關推薦

    學習鴻蒙必須要知道的幾個名詞

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

    鴻蒙開發ArkUI-X基礎知識:【ArkUI代碼工程及構建介紹】

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

    鴻蒙開發ArkUI-X基礎知識:【ArkUI跨平臺設計總體說明】

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

    鴻蒙ArkUI-X跨平臺技術:【開發準備】

    本文檔適用于ArkUI跨平臺應用開發的初學者。通過開發環境搭建、應用工程創建、編譯和運行,熟悉ArkUI跨平臺應用開發基本流程。
    的頭像 發表于 05-24 10:40 ?568次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>-X跨平臺技術:【<b class='flag-5'>開發</b>準備】

    鴻蒙ArkUI-X框架開發:【開發準備】

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

    鴻蒙ArkUI-X跨平臺開發:【bility開發說明(Android平臺)】

    本文介紹將ArkUI框架擴展到Android平臺所需要的必要的類及其使用說明,開發者基于OpenHarmony,可復用大部分的應用代碼(生命周期等)并可以部署到Android平臺,降低跨平臺應用
    的頭像 發表于 05-21 10:54 ?1051次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>-X跨平臺<b class='flag-5'>開發</b>:【bility<b class='flag-5'>開發</b>說明(Android平臺)】

    鴻蒙ArkUI-X跨平臺開發:【SDK目錄結構介紹】

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

    鴻蒙ArkUI-X跨平臺開發:【 應用工程結構說明】

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

    鴻蒙ArkUI-X跨平臺技術:【概述】

    ArkUI是一套構建分布式應用的聲明式UI開發框架。它具備簡潔自然的UI信息語法、豐富的UI組件、多維的狀態管理,以及實時界面預覽等相關能力,幫助您提升應用
    的頭像 發表于 05-16 16:19 ?2304次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>-X跨平臺技術:【概述】

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

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

    鴻蒙跨平臺框架:【ArkUi-X】創建工程

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

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

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

    鴻蒙開發學習:初探【ArkUI-X】

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

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

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

    鴻蒙ArkUI開發學習:【渲染控制語法】

    ArkUI開發框架是一套構建 HarmonyOS / OpenHarmony 應用界面的聲明式UI開發框架,它支持程序使用?`if/else
    的頭像 發表于 04-09 16:40 ?1062次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b><b class='flag-5'>開發</b>學習:【渲染控制語法】
    大发888娱乐城dknmwd| 大发888是真的吗| 天健棋牌大厅下载| 百家乐官网免費游戏| 百家乐官网凯时娱乐平台| 百家乐投注方法投资法| 威尼斯人娱乐最新地址| 百家乐官网筛子游戏| 澳门百家乐官网官方网站| 百家乐一年诈骗多少钱| 仪陇县| 新时代百家乐官网娱乐城| 信誉百家乐博彩网| 足球现金网开户| 百家乐官网博之道娱乐城| 百家乐怎样玩才能赢| 澳门顶级赌场国际| 百家乐官网破解| 百家乐学院| a8娱乐城官方网站| 百家乐官网任你博娱乐平台| 百家乐官网游戏| 二手房| 百家乐在线手机玩| 大发888注册送50| 百家乐官网筹码真伪| 博彩百家乐最新优惠| 信誉百家乐博彩网| 姚记娱乐城信誉最好| 百家乐官网大赢家客户端| 澳门百家乐会出千吗| 棋牌游戏易发| 皇家百家乐官网出租平台| 澳门百家乐官网| 百家乐官网网络赌博真假| 永利百家乐娱乐平台| 百家乐官网园千术大全| 百家乐注码技术打法| 百家乐机械图片| 额尔古纳市| 百家乐平台有什么优惠|