1. 程式人生 > 其它 >【Harmony OS】【ArkUI】ets開發 圖形與動畫繪製

【Harmony OS】【ArkUI】ets開發 圖形與動畫繪製

前言:

之前我們已經完成了Harmony ArkUI 使用ets方式實現基礎的頁面佈局和資料連線的學習,這次我們在原有的基礎上進行一些圖片和動畫的繪製學習。本篇是以HarmonyOS官網的基於TS擴充套件的宣告式開發正規化文件,繪圖和動畫為基礎進行編寫。所以筆者將原文進行整合,提取出其中的要點,以便通俗易懂地呈現給讀者,希望能幫助你快速瞭解Harmony的ETS開發,學會簡單的圖形和動畫繪製的學習。本篇最後會貼上參考原文連結。 

首先講一下大致的思路,我們要使用元件工具繪製基本的幾何圖形,繪製自定義幾何圖形,給圖形新增動畫效果,以及頁面的轉場動畫。所以筆者將整個功能的實現分為了兩個步驟,圖形繪製和動畫繪製,這與原篇大致相同。

1. 圖形繪製。

在之前的學習中,我們已經建立的專案,頁面佈局已經完備,這次學習我們就在這基礎上進行圖形繪製。FoodDetail頁面的食物成分表裡,給每一項成分名稱前都加上一個圓形的圖示作為成分標籤。

1) 繪製基本圖形。建立Circle元件,在每一項含量成分前增加一個圓形圖示作為標籤。修改FoodDetail頁面的ContentTable元件裡的IngredientItem方法,在成分名稱前新增Circle。每個成分的標籤顏色不一樣在build方法中,呼叫IngredientItem,給每個Circle填充不一樣的顏色。

開啟previewer或模擬器看一下效果

2) 繪製自定義圖形。在pages資料夾下建立新的eTS頁面Logo.ets。在Logo.ets中建立Logo Component,建立Flex元件為根節點,建立Shape元件為Flex子元件。給頁面填充漸變色。設定為線性漸變,偏移角度為180deg,三段漸變 #BDE895 -->95DE7F --> #7AB967。

開啟previewer或模擬器看一下效果

3) 繪製路線Path,設定其繪製命令。填充顏色為白色。

4) 在Shape元件內繪製第二個Path。第二條Path的背景色為漸變色。Path的繪製命令比較長,可以將其作為元件的成員變數,通過this呼叫。完成應用Logo的繪製。Shape組合了三個Path元件。

開啟previewer或模擬器看一下效果

2. 動畫繪製。

上一部分我們已經學習了普通圖形和自定義圖形的繪製,這一部分我們會在圖形繪製的基礎上給推行新增動畫效果,讓圖形動起來,這就是動畫繪製。

動畫功能分為元件動畫和頁面間動畫,在本節主要完成兩個動畫效果:Logo圖示的漸出和放大效果與食物列表頁和食物詳情頁的轉場動畫效果。

1) 閃屏動畫。閃屏動畫的預期效果是,進入Logo頁面後,animateTo動畫效果自動開始播放。呼叫Shape的onAppear方法,設定其顯式動畫。建立opacity和scale數值的成員變數,用裝飾器@State修飾。表示其為有狀態的資料,即改變會觸發頁面的重新整理。

2) 設定animateTo的動畫曲線curve。Logo的加速曲線為先慢後快,使用貝塞爾曲線cubicBezier,cubicBezier(0.4, 0, 1, 1)。使用插值計算,首先要匯入curves模組。

3) 設定動畫時長為1s,延時0.1s開始播放,設定顯示動效event的閉包函式,實現Logo的漸出和放大效果。閃屏動畫播放結束後定格1s,進入FoodCategoryList頁面。設定animateTo的onFinish回撥介面,呼叫定時器Timer的setTimeout介面延時1s後,呼叫router.replace,顯示FoodCategoryList頁面。

開啟previewer或模擬器看一下效果

4) 頁面轉場動畫。食物分類列表頁和食物詳情頁之間的共享元素轉場,即點選FoodListItem/FoodGridItem後,食物縮圖會放大,隨著頁面跳轉,到食物詳情頁的大圖。引入curves模組。在FoodListItem的Image元件上設定autoResize為false,因為image元件預設會根據最終展示的區域,去調整圖源的大小,以優化圖片渲染效能。

5) 設定FoodDetail頁面的FoodImageDisplay的Image元件的共享元素轉場方法(sharedTransition)。設定方法同上。

開啟previewer或模擬器看一下效果

以上,本次的內容分享,謝謝!

參考原文連結:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-ts-drawing-feature-0000001192705721