一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-06-17 11:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

1. Lottie介紹

Lottie 組件效果如下所示:

1.1 什么是Lottie?

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

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

圖1 整體流程

1.2 Lottie繪制流程

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

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

圖2 lottie繪制流程

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

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

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

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

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

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

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

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

8. 返回動(dòng)畫實(shí)例,通過 loadAnimation() 接口返回動(dòng)畫實(shí)例 AnimationItem。

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

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

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

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

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

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

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

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

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

2. Lottie實(shí)戰(zhàn)

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

2.1 創(chuàng)建項(xiàng)目

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

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

圖3 創(chuàng)建工程

2.2 添加依賴

成功創(chuàng)建項(xiàng)目后,接下來就是將 Lottie 組件下載至項(xiàng)目中。首先,我們需找到 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)航欄,點(diǎn)擊“Terminal”(快捷鍵 Alt+F12), 鍵入命令:npm install @ohos/lottie-ohos-ets 并回車,此時(shí) Lottie 組件會(huì)自動(dòng)下載至項(xiàng)目中。下載完成后工程根目錄下會(huì)生成 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)出動(dòng)畫資源并保存

將 After Effects 導(dǎo)出的 json 動(dòng)畫資源文件保存到項(xiàng)目中,保存路徑如下: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ù)邏輯代碼 ,為了兼顧資源的及時(shí)釋放,在組件 @Component 聲明內(nèi)的聲明周期 onDisappear() 或 onPageHide() 中調(diào)用 lottie.destory() 釋放資源。示例代碼如下所示:
import lottie from 'lottie-ohos-ets'

@Entry@Componentstruct Index {  private controller: RenderingContext = new RenderingContext();// 動(dòng)畫別名  private animateName: string = "animation";// 動(dòng)畫資源相對路徑  private animatePath: string = "common/lottie/animation.json";  private onPageHide(): void {    // 隨頁面隱藏銷毀動(dòng)畫    lottie.destroy();  }  build() {    Column() {      // 聲明Animator與Canvas組件      Animator('__lottie_ets')      Canvas(this.controller)        .width('30%')        .height('20%')        .backgroundColor('#ff0000')        .onAppear(() => {          // 隨Canvas布局自動(dòng)加載動(dòng)畫          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)擊控制動(dòng)畫暫停與播放的切換          lottie.togglePause(this.animateName);        })    }    .width('100%')    .height('100%')  }}
以上就是 ArkUI 開發(fā)框架中 Lottie 組件的使用,希望廣大開發(fā)者能利用這個(gè)強(qiáng)大的開源組件開發(fā)出更多精美的應(yīng)用。

審核編輯 :李倩


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

    關(guān)注

    0

    文章

    404

    瀏覽量

    17875
  • lottie
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    19940

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    【HarmonyOS next】ArkUI-X休閑益智消消樂【進(jìn)階】

    休閑游戲開發(fā)提供了全新范式,未來可擴(kuò)展排行榜、社交分享等原生能力接入,實(shí)現(xiàn)體驗(yàn)與效率的雙重飛躍。 拓展方向: 接入HarmonyOS分布式能力實(shí)現(xiàn)跨設(shè)備續(xù)玩 集成iOS GameCenter成就系統(tǒng) WebGL替換2D Canv
    發(fā)表于 06-28 21:59

    【HarmonyOS next】ArkUI-X休閑益智兒童拼圖【進(jìn)階】

    項(xiàng)目,我們驗(yàn)證了ArkUI-X框架的強(qiáng)大跨端能力。無論是華為的鴻蒙系統(tǒng),還是iOS平臺(tái),都能保持90%以上代碼復(fù)用率,真正實(shí)現(xiàn)了\"一次開發(fā),多端部署\"的理想狀態(tài)。期待
    發(fā)表于 06-28 21:41

    【HarmonyOS next】ArkUI-X休閑益智猜字謎【基礎(chǔ)】

    下圖是在iOS中的運(yùn)行效果 下圖是在HarmonyOS中的運(yùn)行效果 今天咱們來聊聊如何用ArkUI-X這個(gè)新興框架實(shí)現(xiàn)跨端開發(fā),通過一個(gè)猜字謎小游戲帶大家感受它的開發(fā)魅力。本文不僅能讓
    發(fā)表于 06-26 20:01

    ArkUI-X通過Stage模型開發(fā)Android端應(yīng)用指南(一)

    簡介 本文介紹將ArkUI框架擴(kuò)展到Android平臺(tái)所需要的必要的類及其使用說明,開發(fā)者基于OpenHarmony,可復(fù)用大部分的應(yīng)用代碼(生命周期等)并可以部署到Android平臺(tái),降低跨平臺(tái)
    發(fā)表于 06-24 22:16

    ArkUI介紹

    ArkUI(方舟UI框架)為應(yīng)用的UI開發(fā)提供了完整的基礎(chǔ)設(shè)施,包括簡潔的UI語法、豐富的UI功能(組件、布局、動(dòng)畫以及交互事件),以及實(shí)時(shí)界面預(yù)覽工具等,可以支持
    發(fā)表于 06-24 06:41

    UI開發(fā)概述

    動(dòng)畫、顯式動(dòng)畫、自定義轉(zhuǎn)場動(dòng)畫以及動(dòng)畫API等,開發(fā)者可以通過封裝的物理模型或者調(diào)用動(dòng)畫
    發(fā)表于 06-24 06:36

    ArkUI-X案例解析

    實(shí)現(xiàn)的,應(yīng)首先符合ArkUI-X框架的規(guī)格要求. 在應(yīng)用UI方面存在的差異,是無法借助Bridge能力來彌補(bǔ)的。在此建議使用ArkUI-X框架
    發(fā)表于 06-23 22:40

    ArkUI-X應(yīng)用工程結(jié)構(gòu)說明

    簡介 本文檔配套ArkUI-X,將OpenHarmony ArkUI開發(fā)框架擴(kuò)展到不同的OS平臺(tái),比如Android和iOS平臺(tái),讓開發(fā)者基
    發(fā)表于 06-19 23:11

    ArkUI-X跨平臺(tái)應(yīng)用改造指南

    ,包含了應(yīng)用的所有UI界面、彈窗、媒體圖片等元素,這些都是能夠被用戶直接感知并進(jìn)行操作的。此層是借助HarmonyOS的ArkUI組件以及相關(guān)能力來進(jìn)行設(shè)計(jì)與開發(fā)的,并且ArkUI-X
    發(fā)表于 06-16 23:05

    ArkUI-X在Android平臺(tái)動(dòng)態(tài)化開發(fā)指南

    本文介紹如何在Android平臺(tái)進(jìn)行ArkUI-X動(dòng)態(tài)化開發(fā),包括動(dòng)態(tài)化目錄規(guī)則及約束。 適用場景 動(dòng)態(tài)化主要包括兩個(gè)典型場景: 場景1:框架動(dòng)態(tài)化,為了降低應(yīng)用ROM體積占用,及滿足動(dòng)態(tài)升級
    發(fā)表于 06-15 23:33

    ArkUI-X框架LogInterface使用指南

    ArkUI-X框架支持日志攔截能力,Android側(cè)提供原生接口,用于注入LogInterface接口,框架日志及ts日志通過該接口輸出,本文的核心內(nèi)容是介紹如何在Android平臺(tái)上
    發(fā)表于 06-15 23:20

    ArkUI-X中Plugin生命周期開發(fā)指南

    ArkUI-X插件用于拓展ArkUI應(yīng)用的能力,提供管理插件生命周期的能力。本文主要介紹Android平臺(tái)的ArkUI-X插件生命周期的使用
    發(fā)表于 06-04 22:36

    ArkUI-X跨平臺(tái)框架接入指南

    ArkUI跨平臺(tái)框架(ArkUI-X)進(jìn)一步將ArkUI開發(fā)框架擴(kuò)展到了多個(gè)OS平臺(tái):目前支持O
    發(fā)表于 05-18 18:21

    華為推出RN/H5多設(shè)備自適應(yīng)組件庫

    在原生鴻蒙應(yīng)用開發(fā)中,華為針對ArkUI框架推出了一整套針對多設(shè)備適配的完善能力(如“一多”能力)以及高階組件(如分欄、邊看邊評等),幫助
    的頭像 發(fā)表于 01-16 14:46 ?766次閱讀

    HarmonyOS開發(fā)指導(dǎo)類文檔更新速遞(上)

    、媒體相關(guān)能力新增、優(yōu)化文檔,方便開發(fā)者更加高效使用文檔。 ArkUI(方舟UI框架ArkUI(方舟UI
    的頭像 發(fā)表于 12-30 09:50 ?1035次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>指導(dǎo)類文檔更新速遞(上)