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

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

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

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

科技觀點(diǎn) ? 來源:科技觀點(diǎn) ? 作者:科技觀點(diǎn) ? 2022-04-27 13:44 ? 次閱讀

ArkUI是一套UI開發(fā)框架,它提供了開發(fā)者進(jìn)行應(yīng)用UI開發(fā)時(shí)所必須的能力。隨著OpenHarmony v3.1 Release(后文簡稱v3.1)版本的發(fā)布,ArkUI框架也增加了許多新能力,接下來跟隨小編一起看看都有哪些新增能力吧。

1 ArkUI框架新增能力概覽

本次版本更新主要提升了ArkUI框架開發(fā)大型應(yīng)用的能力。如圖1所示,藍(lán)色模塊是本次新版本ArkUI框架的新增/增強(qiáng)能力,它包括:Canvas、OffscreenCanvas、XComponent組件、Web組件、鍵盤與鼠標(biāo)以及eTS編譯打包與實(shí)時(shí)預(yù)覽能力。

poYBAGJo2CqAAndTAAA-KdUxgAs032.png

圖1 ArkUI框架新增能力概覽圖

每一次能力的新增,都是為了讓開發(fā)者能夠更加高效、便捷地開發(fā),下面一起了解一下這些新能力都將帶來哪些便捷。

為了便于大家理解,小編將本次新增的能力分成了以下三類:新增聲明式Canvas繪制能力、新增混合開發(fā)能力和增強(qiáng)UI開發(fā)能力。

1.1 新增聲明式Canvas繪制能力

新增聲明式Canvas繪制能力中包含Canvas組件和OffscreenCanvas組件。

Canvas組件:為了方便開發(fā)者通過繪制方式實(shí)現(xiàn)自定義UI效果,v3.1版本新增了Canvas繪制能力。

OffscreenCanvas組件:為了滿足開發(fā)者離屏繪制開發(fā)場景,v3.1版本新增了離屏繪制能力。

有了Canvas繪制能力后,v3.1版本便基于Canvas移植了Lottie的動畫庫供開發(fā)者使用,后文將詳細(xì)介紹。

1.2 新增混合開發(fā)能力

新增混合開發(fā)能力中包含了XComponent組件和Web組件。

XComponent組件:為了便于開發(fā)者在OpenHarmony系統(tǒng)上構(gòu)建C++/TS應(yīng)用,以滿足類似游戲、地圖等應(yīng)用開發(fā)場景,v3.1版本提供了XComponent組件及其配套的NDK(native development kit,原生開發(fā)包)。

Web組件:為了滿足開發(fā)者在應(yīng)用內(nèi)加載和訪問HTML5網(wǎng)頁的需求,v3.1版本重點(diǎn)構(gòu)建了Web組件,并提供了豐富的API可支撐HTML5頁面與TS頁面進(jìn)行數(shù)據(jù)交互。

1.3 增強(qiáng)UI開發(fā)能力

增強(qiáng)UI開發(fā)能力中包含了鍵盤與鼠標(biāo)的組件統(tǒng)一交互能力增強(qiáng)和開發(fā)工具鏈的eTS編譯打包與實(shí)時(shí)預(yù)覽能力增強(qiáng)。

鍵盤與鼠標(biāo):新版本中還重點(diǎn)提升了統(tǒng)一交互的操作體驗(yàn),開發(fā)者無需進(jìn)行復(fù)雜適配,即可支持用戶使用鍵盤、鼠標(biāo)進(jìn)行UI交互。

eTS編譯打包與實(shí)時(shí)預(yù)覽為了滿足了多種狀態(tài)樣式統(tǒng)一設(shè)置的訴求,v3.1版本提供了@Style裝飾器,優(yōu)化了工具鏈的編譯性能與預(yù)覽性能,實(shí)現(xiàn)了支持多種文件大型應(yīng)用編譯。

看完這些新增能力,你也許會很好奇,它們是如何使用的呢?接下來請跟隨小編的步伐,一起了解一下這些新增能力的使用方法吧。

2 新增聲明式Canvas繪制能力

2.0.1 聲明式Canvas介紹

首先介紹一下聲明式Canvas給大家提供的繪制能力。為了更好地利用現(xiàn)有Web Canvas生態(tài),v3.1版本提供了標(biāo)準(zhǔn)的W3C Canvas繪制接口(如圖2所示),豐富的繪制方法可以讓開發(fā)者高效繪制出矩形、文本、圖像等。

注:因OffscreenCanvas與Canvas繪制接口相同,都遵循w3c標(biāo)準(zhǔn),故此處不再贅述

pYYBAGJo2CuAGJoYAAG5_Py22Rs305.png

圖2 W3C Canvas繪制接口

2.0.2 使用方法

下面介紹一個(gè)示例,給大家展示聲明式開發(fā)范式中Canvas組件的基礎(chǔ)使用方法。

圖3是三張圖片疊加的效果,頂層的圖片覆蓋了底層的圖片。通過依次使用drawImage(x,y, width, height)方法設(shè)置圖片坐標(biāo)及尺寸,后面繪制的圖片自動覆蓋原來的圖像,從而達(dá)到圖片疊加顯示的效果。

poYBAGJo2CuAKiISAAD7VL0FjcM952.png

圖3 圖片疊加

如下代碼所示,首先在Column()組件中創(chuàng)建了一塊畫布,并結(jié)合內(nèi)置組件與屬性方法對畫布進(jìn)行聲明式描述。

然后通過RenderingContext()獲取命令式的繪圖對象,將聲明式UI界面與命令式繪制良好地關(guān)聯(lián)起來。

最后通過onReady回調(diào)方法直接使用命令式語法,使用繪制對象在畫布中進(jìn)行繪制。

pYYBAGJo2CuAX0G4AACO7pszn04129.png

2.1 基于聲明式Canvas的Lottie動畫支持

2.1.1 介紹

Lottie是業(yè)界常用的動畫格式,它支持通過Canvas渲染,OpenHarmony團(tuán)隊(duì)為大家改造了lottie庫,命名為lottie-ohos-ets,開發(fā)者可以直接引用該庫,綁定Canvas組件后即可顯示動畫。

2.1.2 使用方法

Lottie動畫的使用主要分為以下四個(gè)步驟:

步驟一:準(zhǔn)備Lottie文件,作為資源添加(可以使用AE工具制作并導(dǎo)出JSON文件)

poYBAGJo2CyAEo3xAAAnt3BFMEY604.png

步驟二:引入Lottie-ohos-ets支持庫

import lottie from ‘lottie-ohos-ets’

步驟三:將lottie動畫與Canvas綁定

pYYBAGJo2CyAATshAACFgNmX7vk498.png

步驟四:顯示動畫

poYBAGJo2CyAYrnCAAAhFooSG5o511.png

3 新增混合開發(fā)能力

3.1 基于XComponent的C++/TS混合開發(fā)能力

3.1.1 介紹

在應(yīng)用開發(fā)過程中,很多場景是無法直接采用UI組合實(shí)現(xiàn)的,例如游戲、地圖這種應(yīng)用需要依賴C++、 SDK進(jìn)行獨(dú)立渲染,又如相機(jī)、視頻播放器這種應(yīng)用是需要使用相機(jī)進(jìn)行預(yù)覽顯示的,因此就需要框架能提供一種可以在C++側(cè)進(jìn)行繪制的組件,于是v3.1版本就推出了XComponent組件,它可以支持C++/TS混合開發(fā)。

如圖4所示,系統(tǒng)分為應(yīng)用層、框架層和系統(tǒng)服務(wù)層,藍(lán)色模塊是新增能力。v3.1版本在框架層部分提供了聲明式的XComponent組件,以便開發(fā)者在應(yīng)用頁面中進(jìn)行使用。

pYYBAGJo2CyAH65kAAAe3G5PAZU222.png

圖4 XComponent的C++/TS混合開發(fā)

3.1.2 使用方法

在應(yīng)用層中,開發(fā)者可以使用系統(tǒng)NDK提供的標(biāo)準(zhǔn)庫進(jìn)行應(yīng)用動態(tài)庫的開發(fā),標(biāo)準(zhǔn)庫中為應(yīng)用繪制提供了標(biāo)準(zhǔn)的EGL/OpenGLES接口,可以支持三方SDK直接引入使用,再結(jié)合框架層的XComponent提供的接口即可對C++進(jìn)行渲染。

基于XComponent組件的C++/TS混合開發(fā)主要分為以下幾個(gè)步驟:

步驟一:首先是開發(fā)C++動態(tài)庫。基于NDK編譯工具,將開發(fā)者編寫的CPP文件編譯成.so文件。

開發(fā)者僅需要引入頭文件,并覆蓋OnSurfaceCreate方法進(jìn)行繪制即可使用NDK提供的OpenGLES接口,實(shí)現(xiàn)繪制效果。代碼如下:

poYBAGJo2C2AIgDkAAD2254DnWo299.png

步驟二:然后通過XComponent組件加載動態(tài)庫。調(diào)用TS接口,通過TS控制C++邏輯,傳入數(shù)據(jù)與事件,即可對C++邏輯進(jìn)行渲染。

XComponent組件的使用也極其簡單,設(shè)置參數(shù)對應(yīng)動態(tài)庫名稱即可實(shí)現(xiàn)加載。代碼如下:

pYYBAGJo2C2AIIp_AAAkXvA1LqU199.png

3.2 基于Web組件的HTML5/TS混合開發(fā)能力

3.2.1 介紹

有些應(yīng)用開發(fā)場景是在應(yīng)用中嵌入網(wǎng)頁,網(wǎng)頁可能是本地頁面,也可能是網(wǎng)絡(luò)頁面,且需要在HTML5頁面中與原生組件之間進(jìn)行數(shù)據(jù)傳遞。針對以上開發(fā)場景,v3.1版本提供了基于Web組件的HTML5/TS混合開發(fā)能力。

3.2.2 使用方法

Web組件的使用方法主要分為以下幾個(gè)步驟:

步驟一:首先提前準(zhǔn)備好HTML5頁面文件或者網(wǎng)絡(luò)地址

步驟二:然后用Web組件加載HTML5頁面

步驟三:最后就可以顯示出頁面內(nèi)容

下面通過一個(gè)例子,來為大家展示W(wǎng)eb組件加載頁面的使用步驟。如圖5所示,這是一個(gè)常見的Web組件使用場景,首先是準(zhǔn)備好網(wǎng)絡(luò)地址http://openharmony.cn并將Web組件與其他組件在同一頁面中共同縱向布局排列,然后用Web組件通過src指定首頁鏈接并加載頁面,最后頁面就構(gòu)建完成了。

poYBAGJo2C6AAgQpAAAm4TUzInI699.pngpYYBAGJo2C6Aed67AABsXGOTDGo521.png

圖5 Web組件的HTML5/TS混合開發(fā)

Web組件還提供了將HTML5頁面與原生TS頁面進(jìn)行交互的能力,它可以支持在原生組件頁面中執(zhí)行HTML5頁面中定義的JavaScript方法,也可以支持在HTML5頁面中使用原生頁面中注入的JavaScript對象。由于篇幅有限,此處不再針對上述能力展開介紹,開發(fā)者可以自行訪問社區(qū)開發(fā)文檔,基于runJavaScript 方法 和 registerJavaScriptProxy 方法的示例,構(gòu)建出能力更強(qiáng)的Web應(yīng)用。

社區(qū)開發(fā)文檔

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-web.md

4 增強(qiáng)UI開發(fā)能力

4.1 鍵盤與鼠標(biāo)的組件統(tǒng)一交互能力增強(qiáng)

在v3.1版本中,ArkUI框架增強(qiáng)了統(tǒng)一交互能力,它讓應(yīng)用開發(fā)更加化繁為簡。如圖6所示,v3.1版本將鼠標(biāo)、鍵盤在組件層面進(jìn)行了統(tǒng)一,通過相同事件回調(diào)屏蔽了輸入設(shè)備類型的差異,因此開發(fā)者無需關(guān)心具體的輸入設(shè)備類型。

poYBAGJo2C6AJEWFAABF8IZ4asM094.png

圖6 組件統(tǒng)一交互

4.2 開發(fā)工具鏈的eTS編譯打包與實(shí)時(shí)預(yù)覽

開發(fā)工具鏈DevEco Studio也跟隨v3.1版本的更新做了能力的增強(qiáng),能力增強(qiáng)后的工具實(shí)現(xiàn)了支持多種文件大型應(yīng)用編譯、擁有亞秒級的實(shí)時(shí)預(yù)覽效果、組件雙向預(yù)覽能力、可以實(shí)時(shí)查看組件的屬性,且實(shí)時(shí)查看的效果已與業(yè)界持平。歡迎開發(fā)者更新最新的DevEco Studio進(jìn)行使用體驗(yàn)。

DevEco Studio下載地址:

https://developer.harmonyos.com/cn/develop/deveco-studio#download_beta_openharmony

最后介紹一下v3.1版本為大家提供的新裝飾器@Style。該裝飾器可以將樣式統(tǒng)一設(shè)置,樣式復(fù)用,同時(shí)v3.1版本針對多態(tài)效果,提供了一次性設(shè)置接口,該能力能夠最大化復(fù)用樣式設(shè)置。如圖7所示,左邊通過@Style分別定義三種樣式集合,之后通過右邊stateStyles屬性方法,同時(shí)設(shè)置給UI組件,即可實(shí)現(xiàn)圖8中三種效果,分別為正常狀態(tài)效果、按壓狀態(tài)效果和禁用狀態(tài)效果。

pYYBAGJo2C6ANSXCAAAckOoqYFc263.png

圖7 樣式集合

poYBAGJo2C6AXBvEAAAyyn9jU_s548.png

圖8 效果圖

5 結(jié)語

以上就是本期ArkUI框架新能力的全部介紹啦,歡迎大家踴躍嘗鮮。同時(shí)ArkUI框架未來會進(jìn)一步提升動態(tài)布局能力和推出跨OS平臺部署等相關(guān)能力,各位開發(fā)者敬請期待!

審核編輯:湯梓紅

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

    關(guān)注

    0

    文章

    16

    瀏覽量

    10989
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3722

    瀏覽量

    16317
收藏 人收藏

    評論

    相關(guān)推薦

    詳細(xì)了解驍龍8至尊版強(qiáng)大的AI能力

    強(qiáng)大的AI性能加持下,可支持個(gè)性化的多模態(tài)AI助手,并為終端設(shè)備帶來全面煥新的AI影像和豐富有趣的AI游戲體驗(yàn)。下面,就讓我們詳細(xì)了解驍龍8至尊版強(qiáng)大的AI能力。 全面升級的AI性能 早在第三代驍龍8移動平臺上,高通已將高性
    的頭像 發(fā)表于 12-24 11:47 ?351次閱讀
    <b class='flag-5'>詳細(xì)了解</b>驍龍8至尊版強(qiáng)大的AI<b class='flag-5'>能力</b>

    帶你詳細(xì)了解工業(yè)電腦

    扇設(shè)計(jì)、承受振動和惡劣環(huán)境的能力、輕松配置、全面的I/O選項(xiàng)、延長生命周期、耐用的組件。了解如何為您的應(yīng)用選擇工業(yè)電腦對提高設(shè)施的生產(chǎn)力和效率至關(guān)重要。詳細(xì)了解
    的頭像 發(fā)表于 06-12 14:24 ?410次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>帶你<b class='flag-5'>詳細(xì)了解</b>工業(yè)電腦

    鴻蒙開發(fā)ArkUI-X基礎(chǔ)知識:【ArkUI代碼工程及構(gòu)建介紹】

    ArkUI作為OpenHarmony的默認(rèn)開發(fā)框架,在本項(xiàng)目(ArkUI-X)中需要做到套代碼同時(shí)支持多平臺構(gòu)建,所以會采取共倉開發(fā)的方式,部分倉直接指向OpenHarmony相關(guān)開
    的頭像 發(fā)表于 05-25 16:45 ?2089次閱讀
    鴻蒙開發(fā)<b class='flag-5'>ArkUI</b>-X基礎(chǔ)知識:【<b class='flag-5'>ArkUI</b>代碼工程及構(gòu)建介紹】

    鴻蒙開發(fā)ArkUI-X基礎(chǔ)知識:【ArkUI跨平臺設(shè)計(jì)總體說明】

    本文檔描述ArkUI開發(fā)框架跨平臺運(yùn)行能力相關(guān)的總體技術(shù)方案。
    的頭像 發(fā)表于 05-24 15:41 ?1551次閱讀
    鴻蒙開發(fā)<b class='flag-5'>ArkUI</b>-X基礎(chǔ)知識:【<b class='flag-5'>ArkUI</b>跨平臺設(shè)計(jì)總體說明】

    鴻蒙ArkUI-X框架開發(fā):【開發(fā)準(zhǔn)備】

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

    鴻蒙ArkUI-X跨平臺開發(fā):【 編寫第個(gè)ArkUI-X應(yīng)用】

    通過構(gòu)建個(gè)簡單的ArkUI頁面跳轉(zhuǎn)示例,快速了解資源創(chuàng)建引用,路由代碼編寫和UI布局編寫等應(yīng)用開發(fā)流程。
    的頭像 發(fā)表于 05-21 17:36 ?709次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>-X跨平臺開發(fā):【 編寫第<b class='flag-5'>一</b>個(gè)<b class='flag-5'>ArkUI</b>-X應(yīng)用】

    鴻蒙ArkUI-X跨語言調(diào)用說明:【平臺橋接(@arkui-x.bridge)】

    平臺橋接用于客戶端(ArkUI)和平臺(Android或iOS)之間傳遞消息,即用于ArkUI與平臺雙向數(shù)據(jù)傳遞、ArkUI側(cè)調(diào)用平臺的方法、平臺調(diào)用ArkUI側(cè)的方法。
    的頭像 發(fā)表于 05-21 15:09 ?748次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>-X跨語言調(diào)用說明:【平臺橋接(@<b class='flag-5'>arkui</b>-x.bridge)】

    鴻蒙ArkUI-X跨平臺技術(shù):【概述】

    ArkUI套構(gòu)建分布式應(yīng)用的聲明式UI開發(fā)框架。它具備簡潔自然的UI信息語法、豐富的UI組件、多維的狀態(tài)管理,以及實(shí)時(shí)界面預(yù)覽等相關(guān)能力,幫助您提升應(yīng)用開發(fā)效率,并能在多種設(shè)備上實(shí)
    的頭像 發(fā)表于 05-16 16:19 ?2183次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>-X跨平臺技術(shù):【概述】

    鴻蒙跨平臺框架:【ArkUi-X】創(chuàng)建工程

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

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

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

    鴻蒙開發(fā)學(xué)習(xí):初探【ArkUI-X】

    **簡單來說,ArkTS + ArkUI-X 對標(biāo)的框架為 flutter,次代碼,編譯為 native 全平臺運(yùn)行**
    的頭像 發(fā)表于 05-13 15:58 ?1038次閱讀
    鴻蒙開發(fā)學(xué)習(xí):初探【<b class='flag-5'>ArkUI</b>-X】

    鴻蒙ArkUI開發(fā)學(xué)習(xí):【渲染控制語法】

    ArkUI開發(fā)框架套構(gòu)建 HarmonyOS / OpenHarmony 應(yīng)用界面的聲明式UI開發(fā)框架,它支持程序使用?`if/else`?條件渲染,?`ForEach`?循環(huán)渲染
    的頭像 發(fā)表于 04-09 16:40 ?1005次閱讀
    鴻蒙<b class='flag-5'>ArkUI</b>開發(fā)學(xué)習(xí):【渲染控制語法】

    跨Android、iOS、鴻蒙多平臺框架ArkUI-X

    ArkUI套構(gòu)建分布式應(yīng)用界面的聲明式UI開發(fā)框架。它使用極簡的UI信息語法、豐富的UI組件、以及實(shí)時(shí)界面預(yù)覽工具,幫助您提升移動應(yīng)用界面開發(fā)效率30%。您只需使用套ArkTS
    的頭像 發(fā)表于 01-31 14:52 ?1795次閱讀
    跨Android、iOS、鴻蒙多平臺<b class='flag-5'>框架</b><b class='flag-5'>ArkUI</b>-X

    鴻蒙開發(fā)-ArkUI框架實(shí)戰(zhàn)【日歷應(yīng)用 】

    頁42個(gè)格子上顯示上個(gè)月、當(dāng)前月、下個(gè)月的日期,通過日歷應(yīng)用的開發(fā)了解到了ArkUI組件的些用法,生命周期和數(shù)據(jù)的加載過程,對之后的應(yīng)用開發(fā)有很大的幫助。
    發(fā)表于 01-17 21:37

    帶您詳細(xì)了解IEEE802.3bt(PoE++)的有關(guān)特點(diǎn)

    Hqst華強(qiáng)盛(盈盛電子)導(dǎo)讀:帶您詳細(xì)了解IEEE802.3bt(PoE++)的有關(guān)特點(diǎn),讓我們對IEEE802.3bt(PoE++)協(xié)議有更具體的了解
    的頭像 發(fā)表于 01-04 11:26 ?2189次閱讀
    帶您<b class='flag-5'>一</b>起<b class='flag-5'>詳細(xì)了解</b>IEEE802.3bt(PoE++)的有關(guān)特點(diǎn)