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

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

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

深入淺出學習eTs(三)UI布局

Harmony&嵌入式學習 ? 來源:Harmony&嵌入式學習 ? 作者:Harmony&嵌入式學 ? 2023-05-13 13:18 ? 次閱讀

本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)

一、ArkUI介紹

框架介紹

方舟開發(fā)框架(簡稱:ArkUI),是一套UI開發(fā)框架,提供開發(fā)者進行應用UI開發(fā)時所必需的能力。

基本概念

  • 組件:組件是界面搭建與顯示的最小單位。開發(fā)者通過多種組件的組合,構(gòu)建出滿足自身應用訴求的完整界面。
  • 頁面:page頁面是方舟開發(fā)框架最小的調(diào)度分割單位。開發(fā)者可以將應用設計為多個功能頁面,每個頁面進行單獨的文件管理,并通過路由API實現(xiàn)頁面的調(diào)度管理,以實現(xiàn)應用內(nèi)功能的解耦。

主要特征

  • UI組件:方舟開發(fā)框架不僅提供了多種基礎組件,如文本顯示、圖片顯示、按鍵交互等,也提供了支持視頻播放能力的媒體組件。并且針對不同類型設備進行了組件設計,提供了組件在不同平臺上的樣式適配能力,此種組件稱為“多態(tài)組件”。
  • 布局:UI界面設計離不開布局的參與。方舟開發(fā)框架提供了多種布局方式,不僅保留了經(jīng)典的彈性布局能力,也提供了列表、宮格、柵格布局和適應多分辨率場景開發(fā)的原子布局能力。
  • 動畫:方舟開發(fā)框架對于UI界面的美化,除了組件內(nèi)置動畫效果外,也提供了屬性動畫、轉(zhuǎn)場動畫和自定義動畫能力。
  • 繪制:方舟開發(fā)框架提供了多種繪制能力,以滿足開發(fā)者繪制自定義形狀的需求,支持圖形繪制、顏色填充、文本繪制、圖片繪制等。
  • 交互事件:方舟開發(fā)框架提供了多種交互能力,滿足應用在不同平臺通過不同輸入設備均可正常進行UI交互響應,默認適配了觸摸手勢、遙控器、鼠標等輸入操作,同時也提供事件通知能力。
  • 平臺API通道:方舟開發(fā)框架提供了API擴展機制,平臺能力通過此種機制進行封裝,提供風格統(tǒng)一的JS接口

二、常見布局

彈性布局

Flex組件用于創(chuàng)建彈性布局,開發(fā)者可以通過Flex的接口創(chuàng)建容器組件,進而對容器內(nèi)的其他元素進行彈性布局,例如:使三個元素在容器內(nèi)水平居中,垂直等間隔分散。

柵格布局

柵格系統(tǒng)作為一種輔助布局的定位工具,在平面設計和網(wǎng)站設計都起到了很好的作用,對移動設備的界面設計有較好的借鑒作用??偨Y(jié)柵格系統(tǒng)對于移動設備的優(yōu)勢主要有:

  1. 給布局提供一種可循的規(guī)律,解決多尺寸多設備的動態(tài)布局問題。
  2. 給系統(tǒng)提供一種統(tǒng)一的定位標注,保證各模塊各設備的布局一致性。
  3. 給應用提供一種靈活的間距調(diào)整方法,滿足特殊場景布局調(diào)整的可能性。

媒體查詢

媒體查詢(Media Query)在移動設備上應用十分廣泛,開發(fā)者經(jīng)常需要根據(jù)設備的大致類型或者特定的特征和設備參數(shù)(例如屏幕分辨率)來修改應用的樣式。為此媒體查詢提供了如下功能:

  1. 針對設備和應用的屬性信息,可以設計出相匹配的布局樣式。
  2. 當屏幕發(fā)生動態(tài)改變時(比如分屏、橫豎屏切換),應用頁面布局同步更新。

教程主要涉及彈性布局和柵格布局的講解和演示

三、彈性布局

Flex:官方文檔

應用彈性方式布局子組件的容器組件。

參數(shù)

參數(shù)名 參數(shù)類型 必填 默認值 參數(shù)描述
direction FlexDirection FlexDirection.Row 子組件在Flex容器上排列的方向,即主軸的方向。
wrap FlexWrap FlexWrap.NoWrap Flex容器是單行/列還是多行/列排列。
justifyContent FlexAlign FlexAlign.Start 子組件在Flex容器主軸上的對齊格式。
alignItems

ItemAlign

ItemAlign.Stretch 子組件在Flex容器交叉軸上的對齊格式。
alignContent FlexAlign FlexAlign.Start 交叉軸中有額外的空間時,多行內(nèi)容的對齊方式。僅在wrap為Wrap或WrapReverse下生效。

在Super Visual中導入一個flex布局,在右側(cè)可以看到如上的參數(shù)

#深入淺出學習eTs#(三)UI布局-開源基礎軟件社區(qū)
  • FlexDirection枚舉說明
名稱 描述
Row 主軸與行方向一致作為布局模式。
RowReverse 與Row方向相反方向進行布局。
Column 主軸與列方向一致作為布局模式。
ColumnReverse 與Column相反方向進行布局。

在flex中放置兩個標簽,通過修改該參數(shù)可以實現(xiàn)橫向和豎向的顯示

#深入淺出學習eTs#(三)UI布局-開源基礎軟件社區(qū)


#深入淺出學習eTs#(三)UI布局-開源基礎軟件社區(qū)


如上圖,是direction的演示,F(xiàn)lex還有其它參數(shù)

FlexWrap枚舉說明

名稱 描述
NoWrap Flex容器的元素單行/列布局,子項不允許超出容器。
Wrap Flex容器的元素多行/列排布,子項允許超出容器。
WrapReverse Flex容器的元素反向多行/列排布,子項允許超出容器。

FlexAlign枚舉說明

名稱 描述
Start 元素在主軸方向首端對齊,第一個元素與行首對齊,同時后續(xù)的元素與前一個對齊。
Center 元素在主軸方向中心對齊,第一個元素與行首的距離與最后一個元素與行尾距離相同。
End 元素在主軸方向尾部對齊,最后一個元素與行尾對齊,其他元素與后一個對齊。
SpaceBetween Flex主軸方向均勻分配彈性元素,相鄰元素之間距離相同。第一個元素與行首對齊,最后一個元素與行尾對齊。
SpaceAround Flex主軸方向均勻分配彈性元素,相鄰元素之間距離相同。第一個元素到行首的距離和最后一個元素到行尾的距離是相鄰元素之間距離的一半。
SpaceEvenly Flex主軸方向元素等間距布局,相鄰元素之間的間距、第一個元素與行首的間距、最后一個元素到行尾的間距都完全一樣。

大家可以自己自由測試,這里就不一一演示了

四、柵格布局

柵格系統(tǒng)

柵格系統(tǒng)有Column、Margin、Gutter三個概念

#深入淺出學習eTs#(三)UI布局-開源基礎軟件社區(qū)
  1. Gutter: 用來控制元素與元素之間距離關系??梢愿鶕?jù)設備的不同尺寸,定義不同的gutter值,作為柵格布局的統(tǒng)一規(guī)范。為了保證較好的視覺效果,通常gutter的取值不會大于margin的取值。
  2. Margin: 離柵格容器邊緣的距離??梢愿鶕?jù)設備的不同尺寸,定義不同的margin值,作為柵格布局的統(tǒng)一規(guī)范。
  3. Column: 柵格布局的主要定位工具。根據(jù)設備的不同尺寸,把柵格容器分割成不同的列數(shù),在保證margin和gutter符合規(guī)范的情況下,根據(jù)總Column的個數(shù)計算每個Column列的寬度。

系統(tǒng)柵格斷點

系統(tǒng)根據(jù)不同水平寬度設備對應Column的數(shù)量關系,形成了一套斷點規(guī)則定義。

系統(tǒng)以設備的水平寬度的屏幕密度像素值作為斷點依據(jù),根據(jù)當前設備水平寬度所在的斷點范圍,定義了設備的寬度類型。系統(tǒng)的柵格斷點范圍、設備寬度類型及其描述,以及對應的默認總列數(shù)(column),邊距(margin),間隔(gutter)定義如下:

設備水平寬度斷點范圍 設備寬度類型 描述 columns gutter margin
0<水平寬度<320vp XS 最小寬度類型設備。 2 12vp 12vp
320vp<=水平寬度<600vp SM 小寬度類型設備。 4 24vp 24vp
600vp<=水平寬度<840vp MD 中等寬度類型設備。 8 24vp 32vp
840<=水平分辨率 LG 大寬度類型設備。 12 24vp 48vp

這里以兩層嵌套為例:形成一個田字格

#深入淺出學習eTs#(三)UI布局-開源基礎軟件社區(qū)


中間是經(jīng)過多層嵌套形成的田字格,左邊是如何進行嵌套的層級展示,Row為豎向,Column為橫向,如果大家要做一個計算器或者任意形式的布局,使用Row和Column基本都可以實現(xiàn)。

編輯:黃飛

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

    關注

    0

    文章

    20

    瀏覽量

    1604
  • OpenHarmony
    +關注

    關注

    25

    文章

    3641

    瀏覽量

    16061
收藏 人收藏

    評論

    相關推薦

    #深入淺出學習eTs#(八)“猜大小”小游戲

    本項目Gitee倉地址:[深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-17 15:08 ?954次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>#(八)“猜大小”小游戲

    #深入淺出學習eTs#(十)藍藥丸還是紅藥丸

    本項目Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-17 15:07 ?912次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>#(十)藍藥丸還是紅藥丸

    深入淺出排序學習使用指南

    深入淺出排序學習:寫給程序員的算法系統(tǒng)開發(fā)實踐
    發(fā)表于 09-16 11:38

    #深入淺出學習eTs#(一)模擬器/真機環(huán)境搭建

    本項目的Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com
    發(fā)表于 12-24 13:02

    #深入淺出學習eTs#(二)拖拽式UI

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 09:56

    #深入淺出學習eTs#(UI布局

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 09:59

    #深入淺出學習eTs#(四)登陸界面UI

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:01

    #深入淺出學習eTs#(五)eTs語言初識

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:02

    #深入淺出學習eTs#(六)編寫eTs第一個控件

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:05

    #深入淺出學習eTs#(七)判斷密碼是否正確

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:06

    深入淺出Cortex-M0學習資料

    深入淺出Cortex-M0學習資料
    發(fā)表于 06-18 10:50 ?0次下載
    <b class='flag-5'>深入淺出</b>Cortex-M0<b class='flag-5'>學習</b>資料

    深入淺出學習250個通信原理資源下載

    深入淺出學習250個通信原理資源下載
    發(fā)表于 04-12 09:16 ?28次下載

    深入淺出學習低功耗藍牙協(xié)議棧

    深入淺出學習低功耗藍牙協(xié)議棧
    發(fā)表于 06-23 10:35 ?57次下載

    深入淺出學習eTs(一)模擬器/真機環(huán)境搭建

    本項目的Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com
    的頭像 發(fā)表于 05-13 13:17 ?1566次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>(一)模擬器/真機環(huán)境搭建

    深入淺出學習eTs(七)如何判斷密碼是否正確

    本項目Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-13 13:20 ?870次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>(七)如何判斷密碼是否正確