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

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

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

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

ArkUI新能力,助力應(yīng)用開發(fā)更便捷

HarmonyOS開發(fā)者 ? 來源:未知 ? 2023-02-15 16:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:niulihua,華為ArkUI技術(shù)專家;wanglei,華為ArkUI技術(shù)專家

ArkUI是一套構(gòu)建分布式應(yīng)用的聲明式UI開發(fā)框架。它具備簡潔自然的UI信息語法、豐富的UI組件、多維的狀態(tài)管理,以及實(shí)時(shí)界面預(yù)覽等相關(guān)能力,幫助您提升應(yīng)用開發(fā)效率,并能在多種設(shè)備上實(shí)現(xiàn)生動(dòng)而流暢的用戶體驗(yàn)。隨著HarmonyOS 3.1版本的發(fā)布,ArkUI也新增許多能力,助力應(yīng)用開發(fā)更便攜。

ArkUI框架新增能力概覽

ArkUI能力一直在不斷構(gòu)建中,如下圖所示,藍(lán)色模塊是本次新版本ArkUI框架的新增/增強(qiáng)能力。

c7dffae8-ad0a-11ed-bfe3-dac502259ad0.png

ArkUI框架能力集

接下來,小編將從聲明式繪制能力、混合開發(fā)能力、多樣化布局能力、一多組件能力、UI動(dòng)態(tài)化能力五大能力,詳細(xì)說明ArkUI如何讓應(yīng)用開發(fā)更加便捷。

1、聲明式Canvas繪制能力:

為了方便開發(fā)者通過繪制方式實(shí)現(xiàn)自定義UI效果,提供Canvas組件。

2、高性能混合開發(fā)能力:

為滿足三方渲染引擎接入,比如游戲、地圖等,提供了XComponent組件,支持C++/ArkTS混合開發(fā)。

3、多樣化布局能力:

為滿足多種多樣的布局訴求,提供了相對(duì)布局容器、靈活錨點(diǎn)能力、自定義布局能力。

4、一多組件能力:

針對(duì)不同設(shè)備、不同分辨率的多平臺(tái)場(chǎng)景,增強(qiáng)了一多場(chǎng)景的分欄組件能力;為滿足列表項(xiàng)的懸停訴求,增強(qiáng)了列表的吸頂/吸底能力。

5、UI動(dòng)態(tài)化能力:

為滿足大型應(yīng)用的局部更新需求,提供動(dòng)態(tài)化模板能力。

下面針對(duì)這些新增能力,結(jié)合示例逐一詳細(xì)介紹:

說明:什么是一多?

一多是一次開發(fā),多端部署的簡稱。具體指一套代碼工程,一次開發(fā),應(yīng)用安裝包一次上架,多種設(shè)備形態(tài)按需分發(fā)部署。

聲明式Canvas繪制能力

ArkUI通過Canvas組件對(duì)外提供高性能2D繪制能力,滿足多種場(chǎng)景自定義繪制訴求,Canvas組件具備下述特性。

1)Canvas提供繪制路徑、矩形、圓形、字符以及圖像等多種方法;

2)利用現(xiàn)有Web Canvas生態(tài),參考W3C的Canvas接口,而無需引入Web引擎,給開發(fā)者提供了一個(gè)輕量化的2D繪制能力;

c7ecfdec-ad0a-11ed-bfe3-dac502259ad0.png

W3C Canvas繪制接口

3)結(jié)合聲明式語法,兼顧開發(fā)者繪制習(xí)慣;

4)基于GPU渲染加速。

下面的示例,是通過Canvas自繪制實(shí)現(xiàn)的,它繪制了一個(gè)圖片背景,并在上層填充“Harmony OS”的文本,代碼示例如下:

1@Component

2struct IndexCanvas{

3//獲取繪圖對(duì)象

4private ctx: RenderingContext = new RenderingContext();

5//列出所要用到的圖片

6private img: ImageBitmap = new ImageBitmap("common/bg.jpg");

7build() {

8Column() {

9//創(chuàng)建canvas

10Canvas(this.ctx)

11.width(1500)

12.height(900)

13.backgroundColor('#ffff00')

14//開始繪制

15.onReady(() => {

16this.ctx.drawImage(this.img, 0, 0, 400, 200)
17this.ctx.fillStyle = "#FFF"
18this.ctx.font = '100px sans-serif bold'
19this.ctx.fillText("HarmonyOS", 100, 80)
20this.ctx.fillStyle = "rgb(38,79,247)"
21this.ctx.fillRect(250, 85, 26, 4)

22})

23}

24}

25}

(左右滑動(dòng),查看更多)

實(shí)現(xiàn)效果如下圖所示:

Canvas繪制能力效果

Canvas組件:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-canvasrenderingcontext2d.md#drawimage

高性能混合開發(fā)能力

在應(yīng)用開發(fā)過程中,很多場(chǎng)景是無法直接采用UI組合實(shí)現(xiàn)的,例如游戲、地圖是OS上經(jīng)常使用的一類高頻應(yīng)用,但由于游戲和地圖對(duì)OS底層繪制能力要求較高,這類應(yīng)用基本上都是直接使用EGL/OpenGLES的Native能力實(shí)現(xiàn),而XComponent就是ArkTS與C++混合開發(fā)的粘合劑。

如下面框架圖所示,XComponent作為一個(gè)ArkTS組件,具備通用聲明式組件的屬性,可進(jìn)行布局、事件等的聲明式業(yè)務(wù)開發(fā)。同時(shí)開發(fā)者可以使用OS對(duì)外提供的Native API實(shí)現(xiàn)Native的業(yè)務(wù)開發(fā),XComponent負(fù)責(zé)將Native開發(fā)的邏輯和ArkTS的開發(fā)邏輯結(jié)合,完成統(tǒng)一渲染送顯。

c82a05c0-ad0a-11ed-bfe3-dac502259ad0.png

XComponent關(guān)系圖

如下代碼片段,代碼片段1是聲明式的ArkTS實(shí)現(xiàn),代碼片段2是Native的實(shí)現(xiàn)。XComponent通過加載.so并執(zhí)行相關(guān)業(yè)務(wù)邏輯,完成聲明式與C++的混合開發(fā)。

1 // ArkTS入口

2 XComponent({id: 'xcomponentId' , type: 'surface',libraryname: 'nativerender'})

代碼片段1(左右滑動(dòng),查看更多)

1 // C++渲染模塊

2 #include

3 #include

4 #include

5 #include

6

7 void NativeRender (OH_NativeXComponent* component, void* nativewindow){

8 //可調(diào)用NDK提供的C/C++接口(如:EGL/GLES能力)

9 }

10

代碼片段2(左右滑動(dòng),查看更多)

Xcomponent組件:

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

多樣化布局能力

另外,ArkUI提供了多種多樣的布局能力,包括相對(duì)布局容器、靈活錨點(diǎn)能力、以及自定義布局能力。

1、相對(duì)布局容器,讓復(fù)雜布局扁平化

下面結(jié)合示例,具體介紹相對(duì)布局是如何使復(fù)雜的布局扁平化,更易于開發(fā)者開發(fā)的。

如下圖中“布局效果”所示,如果要實(shí)現(xiàn)圖中的效果,一段Text文本位于左上角,另一段Text文本放置在右下角,使用線性布局需要這么實(shí)現(xiàn):在外層套一個(gè)Column容器,里面嵌套2個(gè)Row容器,第一段Text文本放置在第一個(gè)Row的左側(cè),第二段Text文本放置在第二個(gè)Row的右側(cè),需要使用3個(gè)布局容器,2層嵌套。

如果使用相對(duì)布局,只需要外層套一個(gè)RelativeContianer容器,設(shè)置第一行文本在相對(duì)容器的左上角,設(shè)置第二行文本在相對(duì)容器的右下角,只需要1個(gè)布局容器,1層嵌套,代碼實(shí)現(xiàn)上也較簡潔。

c837d114-ad0a-11ed-bfe3-dac502259ad0.png

線性布局和相對(duì)布局實(shí)現(xiàn)對(duì)比

2、靈活錨點(diǎn),讓絕對(duì)定位能力更強(qiáng)大

除了以上介紹的布局能力外,ArkUI還提供了絕對(duì)定位和相對(duì)定位能力,讓開發(fā)者實(shí)現(xiàn)更靈活的定位,現(xiàn)已提供了2個(gè)方法,position和markAnchor。

名稱

參數(shù)類型

參數(shù)類型

position

Position

使用絕對(duì)定位,設(shè)置元素錨點(diǎn)相對(duì)于父容器頂部起點(diǎn)偏移位置。在布局容器中,設(shè)置該屬性不影響父容器布局,僅在繪制時(shí)進(jìn)行位置調(diào)整。

markAnchor

Position

設(shè)置元素在位置定位時(shí)的錨點(diǎn),以元素頂部起點(diǎn)作為基準(zhǔn)點(diǎn)進(jìn)行偏移。

通過position和markAnchor配合使用可以實(shí)現(xiàn)豐富的絕對(duì)定位能力,通過靈活錨點(diǎn)可以實(shí)現(xiàn)如下的定位效果。

c848e31e-ad0a-11ed-bfe3-dac502259ad0.png

靈活錨點(diǎn)定位效果

3、自定義布局,尺寸、位置任意掌控

ArkUI框架除提供的特定布局能力外,還提供了允許開發(fā)者自定義的布局能力。如圖中所示的圓形布局,通過現(xiàn)有的線性布局是很難實(shí)現(xiàn)的,像這類布局就可以通過自定義布局能力實(shí)現(xiàn)。其原理呢,就是通過對(duì)開發(fā)者暴露測(cè)量和布局的接口,允許開發(fā)者自己測(cè)量子組件和設(shè)置子組件位置。

c8575afc-ad0a-11ed-bfe3-dac502259ad0.png

圓形布局效果

流程如下圖所示,開發(fā)者通過onMeasure / onLayout拿到子組件數(shù)據(jù)后,通過measure測(cè)量每個(gè)組件大小,并根據(jù)開發(fā)者意圖通過layout設(shè)置每個(gè)組件的位置,最終實(shí)現(xiàn)開發(fā)者想要的布局。c86a6912-ad0a-11ed-bfe3-dac502259ad0.png

自定義布局實(shí)現(xiàn)流程

除圖中的圓形布局外,瀑布流布局也可以通過自定義布局實(shí)現(xiàn)。

一多組件能力

為幫助開發(fā)者更高效開發(fā)應(yīng)用,我們還提供了分欄架構(gòu)組件及列表組件等一多組件能力。

1、簡單快速的分欄架構(gòu)組件

分欄架構(gòu)組件可以在不同設(shè)備或不同分辨率平臺(tái)下顯示不同效果,分欄組件能自動(dòng)根據(jù)斷點(diǎn)調(diào)整為二分欄或三分欄。

分欄控件的側(cè)邊欄也有2種顯示方式,可以是嵌入式的,內(nèi)容區(qū)顯示在側(cè)邊欄右側(cè),也可以是懸浮在內(nèi)容區(qū)之上,滿足開發(fā)者不同訴求。

2、列表組件能力增強(qiáng),內(nèi)置橫滑動(dòng)效、吸頂效果

1)橫滑動(dòng)效

我們平時(shí)使用比較多的聊天軟件,它的聊天記錄或通信錄一般都是使用列表組件實(shí)現(xiàn)的,當(dāng)需要對(duì)消息或通信錄進(jìn)行刪除時(shí),就是對(duì)列表的列表項(xiàng)刪除。ArkUI新增了列表的手勢(shì)刪除列表項(xiàng)功能,用戶可以通過左滑或右滑刪除某一列表項(xiàng),并內(nèi)置動(dòng)畫效果。c87d7160-ad0a-11ed-bfe3-dac502259ad0.gif

2)吸頂效果

除此之外,列表組件還提供了吸頂效果,在滑動(dòng)列表時(shí),列表組件的title可以懸浮在頂端,便于用戶快速識(shí)別所屬類別。

c890eea2-ad0a-11ed-bfe3-dac502259ad0.gif

UI動(dòng)態(tài)化能力

在不從應(yīng)用市場(chǎng)下載整體應(yīng)用的前提下實(shí)現(xiàn)應(yīng)用的部分內(nèi)容更新,是業(yè)界(尤其是互聯(lián)網(wǎng)應(yīng)用)的一種典型場(chǎng)景。這類場(chǎng)景的實(shí)現(xiàn)就依賴UI動(dòng)態(tài)化能力,動(dòng)態(tài)化本質(zhì)是一種跨平臺(tái)框架,只不過額外增加了不升級(jí)應(yīng)用而實(shí)現(xiàn)動(dòng)態(tài)更新的能力。

c8a511d4-ad0a-11ed-bfe3-dac502259ad0.png

UI動(dòng)態(tài)化原理圖

基本原理如上圖所示:部署在云端的三四方DSL,通過網(wǎng)絡(luò)下載,三方解析框架負(fù)責(zé)加載DSL,并通過解析引擎解析為ArkUI聲明式組件,通過@Extend、@ObjectLink、@Builder機(jī)制支持動(dòng)態(tài)化增加組件能力并融合到現(xiàn)有的UI中,ArkUI提供加載運(yùn)行轉(zhuǎn)換后的組件樹,并負(fù)責(zé)通過框架渲染管線送顯。

結(jié)語

以上就是本期ArkUI框架新能力助力應(yīng)用開發(fā)更便捷的全部介紹啦,歡迎大家到HarmonyOS開發(fā)者官網(wǎng)下載SDK包體驗(yàn)。

未來ArkUI框架會(huì)持續(xù)圍繞競爭力和生態(tài)演進(jìn),多維度細(xì)粒度并發(fā),進(jìn)一步提升能效比,推出統(tǒng)一的聲明式2D&3D范式,不斷豐富跨OS平臺(tái)框架能力,各位開發(fā)者敬請(qǐng)期待!

END

想了解更多HarmonyOS技術(shù)?

后臺(tái)留言給我們

立刻安排!

c8b53ad2-ad0a-11ed-bfe3-dac502259ad0.gif

歡迎點(diǎn)擊|閱讀原文

進(jìn)入HarmonyOS應(yīng)用開發(fā)在線體驗(yàn)


原文標(biāo)題:ArkUI新能力,助力應(yīng)用開發(fā)更便捷

文章出處:【微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


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

    關(guān)注

    80

    文章

    2148

    瀏覽量

    32554

原文標(biāo)題:ArkUI新能力,助力應(yīng)用開發(fā)更便捷

文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【HarmonyOS next】ArkUI-X新聞熱搜聚合App【進(jìn)階】

    通過ArkUI-X將鴻蒙下的新聞熱搜聚合App轉(zhuǎn)換為iOS 一、項(xiàng)目背景與技術(shù)選型 1.1 項(xiàng)目概述 本案例基于鴻蒙(HarmonyOS)開發(fā)的聚合熱搜熱榜應(yīng)用,通過調(diào)用韓小韓博客提供的熱搜熱榜聚合
    發(fā)表于 06-28 21:43

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

    ArkUI-X媲美Flutter的跨端能力,還會(huì)手把手解析關(guān)鍵代碼實(shí)現(xiàn)! 一、環(huán)境準(zhǔn)備清單 ?操作系統(tǒng) :macOS(Windows用戶可通過虛擬機(jī)體驗(yàn)) ?開發(fā)工具 :DevEco Studio 5.0.4
    發(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ā)者進(jìn)行可視化界面開發(fā)
    發(fā)表于 06-24 06:41

    ArkUI-X案例解析

    實(shí)現(xiàn)的,應(yīng)首先符合ArkUI-X框架的規(guī)格要求. 在應(yīng)用UI方面存在的差異,是無法借助Bridge能力來彌補(bǔ)的。在此建議使用ArkUI-X框架中已經(jīng)適配完畢的組件,這些組件功能相對(duì)穩(wěn)定且較為全面。 應(yīng)用改造過程中可能涉及通過Br
    發(fā)表于 06-23 22:40

    ArkUI-X平臺(tái)橋接Bridge說明

    為例,ArkTS和Java沒有相互調(diào)用的能力,為了實(shí)現(xiàn)ArkTS和Java交互,需要ArkTS與C++交互,C++再與Java交互,反之亦然。但是對(duì)于開發(fā)者,就像是ArkTS和Java直接交互。 本文
    發(fā)表于 06-19 23:12

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

    開發(fā)者提供的應(yīng)用工程模板,提供構(gòu)建OpenHarmony應(yīng)用,HarmonyOS應(yīng)用,Android應(yīng)用,iOS應(yīng)用的能力ArkUI-X應(yīng)用工程目錄結(jié)構(gòu) ├── .arkui
    發(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聯(lián)動(dòng)編譯開發(fā)指南

    .arkui-x/android/app/build.gradle目錄下設(shè)置configBuildFlag開關(guān),可觸發(fā)聯(lián)動(dòng)ArkTS源碼編譯腳本,默認(rèn)為false,不執(zhí)行編譯ArkTS腳本文件。 //執(zhí)行聯(lián)動(dòng)
    發(fā)表于 06-16 22:55

    ArkUI-X框架LogInterface使用指南

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

    ArkUI-X構(gòu)建Android平臺(tái)AAR及使用

    本教程主要講述如何利用ArkUI-X SDK完成Android AAR開發(fā),實(shí)現(xiàn)基于ArkTS的聲明式開發(fā)范式在android平臺(tái)顯示。包括: 1.跨平臺(tái)Library工程開發(fā)介紹 2
    的頭像 發(fā)表于 06-12 22:45 ?176次閱讀

    ArkUI-X與Android消息通信

    平臺(tái)橋接用于客戶端(ArkUI)和平臺(tái)(Android或iOS)之間傳遞消息,即用于ArkUI與平臺(tái)雙向數(shù)據(jù)傳遞、ArkUI側(cè)調(diào)用平臺(tái)的方法、平臺(tái)調(diào)用ArkUI側(cè)的方法。本文主要介紹A
    發(fā)表于 06-08 22:15

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

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

    開發(fā)更便利!迅為RK3568/RK3588 定制分區(qū)鏡像發(fā)布

    開發(fā)更便利!迅為RK3568/RK3588 定制分區(qū)鏡像發(fā)布
    的頭像 發(fā)表于 11-11 14:00 ?1109次閱讀
    <b class='flag-5'>開發(fā)</b><b class='flag-5'>更便</b>利!迅為RK3568/RK3588 定制分區(qū)鏡像發(fā)布

    慶科信息獲HarmonyOS高級(jí)應(yīng)用開發(fā)能力認(rèn)證!助力品牌快速打造鴻蒙原生應(yīng)用

    近日,上海慶科信息技術(shù)有限公司榮獲HarmonyOS應(yīng)用開發(fā)者高級(jí)認(rèn)證,公司在華為鴻蒙生態(tài)的開發(fā)能力得到進(jìn)一步拓展,能夠幫助客戶快速開發(fā)基于HarmonyOS Next的鴻蒙原生應(yīng)用,
    的頭像 發(fā)表于 07-17 13:24 ?937次閱讀
    慶科信息獲HarmonyOS高級(jí)應(yīng)用<b class='flag-5'>開發(fā)</b><b class='flag-5'>能力</b>認(rèn)證!<b class='flag-5'>助力</b>品牌快速打造鴻蒙原生應(yīng)用