HarmonyOS學(xué)習(xí)路之開(kāi)發(fā)篇—— Java UI框架(組件與布局說(shuō)明)

Java UI框架概述

UI即使用在屏幕上顯示的用戶界面,該界面用來(lái)顯示所有可能被用戶查看和操作的內(nèi)容浪默。

在HarmonyOS應(yīng)用中所有的界面元素都是由ComponentComponentContainer對(duì)象構(gòu)成牡直。Component是繪制在界面中的對(duì)象,用戶可以與其進(jìn)行交互纳决。ComponentContainer使用戶容納其他Component和ComponentContainer對(duì)象的管理器碰逸。

Java UI框架提供了一部分Component和ComponentContainer的子類,即創(chuàng)建界面時(shí)所用到的各種組件(文本岳链、按鈕花竞、圖片、列表掸哑、選擇约急、提示等)和布局(DirectionalLayout,DependentLayout苗分,StackLayout厌蔽,TableLayout等)。用戶可以對(duì)其進(jìn)行交互操作并取得響應(yīng)摔癣。

所有的UI操作都應(yīng)在主線程中進(jìn)行設(shè)置

組件和布局的關(guān)系

用戶界面中的元素統(tǒng)稱為組件奴饮,組件與組件間通過(guò)層級(jí)結(jié)構(gòu)進(jìn)行組合形成了布局纬向。組件只有被添加到布局中才能進(jìn)行交互,因此一個(gè)用戶界面至少有一個(gè)布局戴卜。一個(gè)完整的用戶界面是一個(gè)布局逾条,在用戶界面中某一個(gè)部分也可作為一個(gè)布局,布局中容納了Component和ComponentContainer對(duì)象投剥。

Component和ComponentContainer

  • Component:提供內(nèi)容的顯示师脂,是所有基礎(chǔ)類組件的基類,開(kāi)發(fā)者可以對(duì)Component設(shè)置事件的回調(diào)來(lái)處理一個(gè)可交互的組件江锨。
  • ComponentContainer:作為容器容納Component或ComponentContainer對(duì)象吃警,并對(duì)它們進(jìn)行布局。Java UI框架提供了一些標(biāo)準(zhǔn)布局功能的容器啄育,它們繼承自ComponentContainer酌心。
    圖1 示意圖
    在這里插入圖片描述

LayoutConfig

每種布局都根據(jù)自身特點(diǎn)提供LayoutConfig供子Component設(shè)定布局屬性和參數(shù),通過(guò)指定布局屬性可以對(duì)子Component在布局中的顯示效果進(jìn)行約束挑豌。如:“width”安券、“height”是布局最基本的屬性,他們指定了組件的大小氓英。
圖2 LayoutConfig


在這里插入圖片描述

組件樹(shù)

布局把Component和ComponentContainer以樹(shù)狀的層級(jí)結(jié)構(gòu)進(jìn)行組織完疫,這樣的一個(gè)布局就稱為組件樹(shù)。組件樹(shù)的特點(diǎn)是僅有一個(gè)根組件债蓝,其他組件有且僅有一個(gè)父節(jié)點(diǎn),組件之間的關(guān)系受到父節(jié)點(diǎn)的規(guī)則約束盛龄。

組件與布局開(kāi)發(fā)

HarmonyOS提供了Ability和AbilitySlice兩個(gè)基礎(chǔ)類饰迹,一個(gè)有界面的Ability可以由一個(gè)或多個(gè)AbilitySlice構(gòu)成,AbilitySlice主要用于承載單個(gè)頁(yè)面的具體邏輯實(shí)現(xiàn)和界面UI余舶,是應(yīng)用顯示啊鸭、運(yùn)行和跳轉(zhuǎn)的最小單元。AbilitySlice通過(guò)setUIContent為界面設(shè)置布局匿值。


在這里插入圖片描述

組件需要進(jìn)行組合赠制,并添加到界面的布局中。在Java UI框架中挟憔,提供了兩種編寫(xiě)布局的方式:

  • 在代碼中創(chuàng)建布局:用代碼創(chuàng)建Component和ComponentContainer對(duì)象钟些,為這些對(duì)象設(shè)置合適的布局參數(shù)和屬性值,并將Component添加到ComponentContainer中绊谭,從而創(chuàng)建出完整界面政恍。
  • 在XML中聲明UI布局:按層級(jí)結(jié)構(gòu)來(lái)描述Component和ComponentContainer的關(guān)系,給組件節(jié)點(diǎn)設(shè)定合適的布局參數(shù)和屬性值达传,代碼中可直接加載生成此布局篙耗。

這兩種方式創(chuàng)建出的布局沒(méi)有本質(zhì)差別迫筑,在XML中聲明布局,在加載后同樣可在代碼中對(duì)該布局進(jìn)行修改宗弯。

組件分類

根據(jù)組件的功能脯燃,可以將組件分為布局類、顯示類蒙保、交互類三類:
布局類
名稱:PositionLayout辕棚、DirectionalLayout、StackLayout追他、DependentLayout坟募、TableLayout、AdaptiveBoxLayout
功能描述:提供了不同布局規(guī)范的組件容器邑狸,例如以單一方向排列的DirectionalLayout懈糯、以相對(duì)位置排列的DependentLayout、以確切位置排列的PositionLayout等单雾。
顯示類
名稱:Text赚哗、Image、Clock硅堆、TickTimer屿储、ProgressBar
功能描述:提供了單純的內(nèi)容顯示,例如用于文本顯示的Text渐逃,用于圖像顯示的Image等够掠。
交互類
名稱:TextField、Button茄菊、Checkbox疯潭、RadioButton/RadioContainer、Switch面殖、ToggleButton竖哩、Slider、Rating脊僚、ScrollView相叁、TabList、ListContainer辽幌、PageSlider增淹、PageFlipper、PageSliderIndicator舶衬、Picker埠通、TimePicker、DatePicker逛犹、SurfaceProvider端辱、ComponentProvider
功能描述:提供了具體場(chǎng)景下與用戶交互響應(yīng)的功能梁剔,例如Button提供了點(diǎn)擊響應(yīng)功能,Slider提供了進(jìn)度選擇功能等舞蔽。

以上組件與布局會(huì)在后續(xù)的文章中進(jìn)行一一講解荣病,從屬性、功能渗柿、使用三個(gè)方面進(jìn)行演示說(shuō)明个盆。

XML創(chuàng)建布局

請(qǐng)?zhí)D(zhuǎn)至HarmonyOS學(xué)習(xí)路之開(kāi)發(fā)基礎(chǔ)——快速入門(mén)(編寫(xiě)第一個(gè)頁(yè)面)

代碼創(chuàng)建布局

請(qǐng)?zhí)D(zhuǎn)至HarmonyOS學(xué)習(xí)路之開(kāi)發(fā)基礎(chǔ)——快速入門(mén)(創(chuàng)建另一個(gè)頁(yè)面)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朵栖,隨后出現(xiàn)的幾起案子颊亮,更是在濱河造成了極大的恐慌,老刑警劉巖陨溅,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件终惑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡门扇,警方通過(guò)查閱死者的電腦和手機(jī)雹有,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)臼寄,“玉大人霸奕,你說(shuō)我怎么就攤上這事〖” “怎么了质帅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)留攒。 經(jīng)常有香客問(wèn)我临梗,道長(zhǎng),這世上最難降的妖魔是什么稼跳? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮吃沪,結(jié)果婚禮上汤善,老公的妹妹穿的比我還像新娘。我一直安慰自己票彪,他們只是感情好红淡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著降铸,像睡著了一般在旱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上推掸,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天桶蝎,我揣著相機(jī)與錄音驻仅,去河邊找鬼。 笑死登渣,一個(gè)胖子當(dāng)著我的面吹牛噪服,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胜茧,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粘优,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了呻顽?” 一聲冷哼從身側(cè)響起雹顺,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎廊遍,沒(méi)想到半個(gè)月后嬉愧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昧碉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年英染,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片被饿。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡四康,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狭握,到底是詐尸還是另有隱情闪金,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布论颅,位于F島的核電站哎垦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏恃疯。R本人自食惡果不足惜漏设,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望今妄。 院中可真熱鬧郑口,春花似錦、人聲如沸盾鳞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腾仅。三九已至乒裆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間推励,已是汗流浹背鹤耍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工肉迫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惰蜜。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓昂拂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抛猖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子格侯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354