自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HarmonyOS《鴻蒙操作系統(tǒng)開發(fā)入門經(jīng)典》之前九類UI組件

開發(fā) OpenHarmony
本文亮點(diǎn):Component示例全面解析(開源代碼)、GIF動圖展示、開發(fā)文檔中文檔和示例代碼的補(bǔ)充學(xué)習(xí)、ACE Java UI組件中的部分組件(50%)。

[[413470]]

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

本文引言

時間:2021年7月21日13:21:30

本文亮點(diǎn):Component示例全面解析(開源代碼)、GIF動圖展示、開發(fā)文檔中文檔和示例代碼的補(bǔ)充學(xué)習(xí)、ACE Java UI組件中的部分組件(50%)

本文包含筆者對徐文禮老師的《鴻蒙操作系統(tǒng)開發(fā)入門經(jīng)典》的學(xué)習(xí)過程中的筆記總結(jié)、拓展思考、案例反饋、閱讀體驗(yàn)。

為尊重老師的知識產(chǎn)權(quán)和精簡本文,本文不會粘貼代碼、倒置案例、機(jī)械打字。

第3章 鴻蒙 ACE Java 應(yīng)用架構(gòu)(2)

3.6 ACE Java UI 基礎(chǔ)組件

3.6.1 組件與組件容器

時間:2021年7月21日13:25:12

  • 用戶界面元素統(tǒng)稱為組件,組件根據(jù)一定的層級結(jié)構(gòu)進(jìn)行組合形成布局。組件在未被添加到布局中時,既無法顯示也無法交互,因此一個用戶界面至少包含一個布局。在UI框架中,具體的布局類通常以XXLayout命名,完整的用戶界面是一個布局,用戶界面中的一部分也可以是一個布局。布局中容納Component與ComponentContainer對象。

應(yīng)用的Ability在屏幕上將顯示一個用戶界面,該界面用來顯示所有可被用戶查看和交互的內(nèi)容。

應(yīng)用中所有的用戶界面元素都是由Component和ComponentContainer對象構(gòu)成。Component是繪制在屏幕上的一個對象,用戶能與之交互。ComponentContainer是一個用于容納其他Component和ComponentContainer對象的容器。

  • Component:提供內(nèi)容顯示,是界面中所有組件的基類,開發(fā)者可以給Component設(shè)置事件處理回調(diào)來創(chuàng)建一個可交互的組件。Java UI框架提供了一些常用的界面元素,也可稱之為組件,組件一般直接繼承Component或它的子類,如Text、Image等。
  • ComponentContainer:作為容器容納Component或ComponentContainer對象,并對它們進(jìn)行布局。Java UI框架提供了一些標(biāo)準(zhǔn)布局功能的容器,它們繼承自ComponentContainer。

學(xué)習(xí)補(bǔ)充:

開發(fā)文檔給的兩個示例。CommonLayout、Components

下面是自己在本機(jī)上跑出來的演示:

示例3-18(為組件添加對應(yīng)的布局屬性)很簡單就沒敲了。

3.6.2 文本組件 Text

時間:2021年7月21日14:41:37

  • Text是用來顯示字符串的組件,在界面上顯示為一塊文本區(qū)域(有很多拓展)
  • Text組件繼承自Component類
  • Text組件可以通過background_element設(shè)置背景(背景放在graphic下)
  • 3-19 (文本背景xml)、 3-20 (文本對齊方式xml)、 3-21(換行和最大顯示行數(shù)xml) 、3-22 (設(shè)置自動換行、最大行數(shù)、自動調(diào)節(jié)字體大小xml)、3-23 (自動調(diào)整規(guī)則java)、3-24(跑馬燈效果xml) 、3-25(跑馬燈java)

示例從文件類型上分為兩類:xml、java

示例從功能效果上分為三類:基礎(chǔ)、自動、跑馬燈

3.6.3 按鈕組件 Button

  • Button是一種常見的組件,單擊可以觸發(fā)相應(yīng)的操作,通常由文本或圖標(biāo)組成,也可以由圖標(biāo)和文本共同組成。
  • 是一種特殊的Text組件
  • 按照按鈕的形狀可以分為: 普通、橢圓、膠囊、圓形

學(xué)習(xí)補(bǔ)充:

Button無自有的XML屬性,共有XML屬性繼承自Text

  • 3-26 (創(chuàng)建按鈕的xml)-就是很簡單的創(chuàng)建一個xml
  • 3-27 (自定義按鈕的形狀)這里有一個很重要的知識點(diǎn)就是==以圖片為按鈕==

SVG轉(zhuǎn)XML

選擇需要導(dǎo)入的svg文件,DevEco會自動把SVG文件導(dǎo)出為xml

通過element_XXX調(diào)整圖片相對于文字的位置

學(xué)習(xí)拓展:

因?yàn)?.62和3.63其中所要講解的**Component示例(開源代碼)(代碼來自開發(fā)文檔開發(fā)文檔)**中都有所以現(xiàn)在對Component.entry做一個全方位解析:

效果如下:

工程文件目錄的呈現(xiàn)和介紹:

以mainability為例子分析代碼和幾者的關(guān)系:

Textslice.xml的分析

3.6.4 文本輸入框組件 TextField

時間:2021年7月21日16:34:14

TextField文本輸入框組件用來接收用戶的輸入

繼承自Text組件

學(xué)習(xí)補(bǔ)充:

示例3-28 (TextField的基本用法)

  • 設(shè)置光標(biāo)自定義氣泡Bubble
  • 舉了一個矩形的自定義氣泡(shape=“rectangle”)
  • 內(nèi)邊距、輸入類型、多行顯示(multiple_lines)
  • 控制文本框是否可用(Enable-當(dāng)為false時無法在文本框輸入)

示例3-29 、3-30 、3-31 、3-32四個示例做了一個網(wǎng)頁登錄頁面(原創(chuàng)大贊)

3個文本框

  • 第一個填手機(jī)號或郵箱信息
  • 第二個用來填寫密碼
  • 第三個填寫短信驗(yàn)證碼

時間:2021年7月22日09:35:15

源代碼找不到,只有手敲!累累累

3.6.5 圖片組件Image

本地圖片一般放在resource目錄下的media文件下面

alpha透明度(HCIA模擬試題有考)

圖片縮放類型

書中案例演練plus

重點(diǎn):

在config.json中添加網(wǎng)絡(luò)權(quán)限

配置網(wǎng)絡(luò)文明訪問白名單

在XML布局文件中添加Image組件,然后通過ID設(shè)置網(wǎng)絡(luò)的圖片

  • 需要定義一個加載圖片的方法(loadNetImageURL-try-catch)
  • 需要在onStart方法中開啟新的線程

3.6.6 TabList和Tab組件

時間:2021年7月22日09:57:39

學(xué)習(xí)補(bǔ)充:

  • Tablist私有屬性著重關(guān)注:
  • tab_indicator_type
  • orientation
  • 設(shè)置fixedMode

默認(rèn)為false,該模式下TabList的總寬度是各Tab寬度的總和,若固定了TabList的寬度,當(dāng)超出可視區(qū)域,則可以通過滑動TabList來顯示。如果設(shè)置為true,TabList的總寬度將與可視區(qū)域相同,各個Tab的寬度也會根據(jù)TabList的寬度而平均分配,該模式適用于Tab較少的情況。

  • TabList可以實(shí)現(xiàn)多個頁簽欄的切換,Tab為某個標(biāo)簽。子頁簽通常放在內(nèi)容區(qū)上方,用于展示不同分類。
  • TabList常用接口:

示例3-33(創(chuàng)建TabList組件) 、3-34 (設(shè)置默認(rèn)狀態(tài)和顏色)、3-35(頁面效果)、

示例3-36(TabList代碼實(shí)現(xiàn))

  • 定義Tab數(shù)組
  • 通過循環(huán)Tab組件的數(shù)組為TabList添加Tab組件
  • 監(jiān)聽TabList的選中事件,在某個Tab組件被選中的時候觸發(fā)onSelected事件

學(xué)習(xí)思考:

其中的API的理解:

tabList.selectTabAt()

tabList.getSelectedTab()

3.6.7 Picker組件

時間:2021年7月22日10:47:11

學(xué)習(xí)補(bǔ)充:

Picker私有屬性重要:

  • value(當(dāng)前值)max_value(最大值)min_value(最小值)
  • selected_normal_text_margin_ratio(比例)
  • wheel_mode_enabled(是否循環(huán)數(shù)據(jù))

Picker組件提供了滑動選擇器,允許用戶從預(yù)定義范圍中進(jìn)行選擇

  • 取值范圍
  • 響應(yīng)選擇器變化
  • 設(shè)置字符串與數(shù)字一一對應(yīng)
  • DataPicker主要提供用戶選擇日期
  • TimePicker主要選擇用戶選擇時間

picker的簡單應(yīng)用(開發(fā)文檔)

picker.setFormatter(Formatter formatter)方法,修改為特定格式

設(shè)置要顯示的字符串?dāng)?shù)組

對于不直接顯示數(shù)字的組件,該方法可以設(shè)置字符串與數(shù)字一一對應(yīng)。字符串?dāng)?shù)組長度必須等于取值范圍內(nèi)的值總數(shù)。用戶在使用時需要注意,該方法會覆蓋picker.setFormatter(Formatter formatter)方法。

Java代碼中

  1. picker.setDisplayedData(new String[]{"Mon""Tue""Wed""Thu""Fri""Sat""Sun"}); 

DatePicker

  • DataPicker繼承自StackLayout
  • 使用DataPicker時,需要進(jìn)行聲明
  1. import ohos.agp.components.DatePicker; 

響應(yīng)日期改變

  • 在XML中添加Text顯示選擇日期
  • 在Java代碼中響應(yīng)日期改變事件

  • TimePicker
  • 獲取時間,響應(yīng)事件

3.6.8 復(fù)選框組件CheckBox

時間:2021年7月22日11:57:55

CheckBox可以實(shí)現(xiàn)選中和取消選中功能

示例3-37 (選中和取消選中)、3-38 (頁面效果)、3-39(事件監(jiān)聽)

  • 需要用**private Set selectedSet = new HashSet<>();**保存選中的結(jié)果
  • ComponentState.COMPONENT_STATE_CHECKED,ComponentState.COMPONENT_STATE_EMPTY,選中和取消的設(shè)置
  • 設(shè)置選中狀態(tài)checkbox.setCheck(true)
  • 關(guān)于初始化CheckBox的范式需要記住(范式代碼來自開發(fā)文檔開發(fā)文檔)
  1. Checkbox checkbox3 = (Checkbox) findComponentById(ResourceTable.Id_check_box_3); 
  2.    checkbox3.setButtonElement(elementButtonInit()); 
  3.    checkbox3.setCheckedStateChangedListener((component, state) -> { 
  4.        if (state) { 
  5.            selectedSet.add("C"); 
  6.        } else { 
  7.            selectedSet.remove("C"); 
  8.        } 
  9.        showAnswer(); 
  10.    }); 

3.6.9 單選按鈕組件 RadioButton

時間:2021年7月22日13:11:38

RadioButton組件用于多選一操作,需要搭配RadioContainer使用

示例3-40 (xml實(shí)現(xiàn)單選)、3-41 (Java響應(yīng)事件)

  • RadioButton組件需要被RadioContainer組件包裹
  • 可以通過orientation來設(shè)置橫縱布局

小總結(jié)

筆者將ACE Java UI框架組件的學(xué)習(xí)分為兩貼,每一貼學(xué)習(xí)50%,本文是前50%。學(xué)習(xí)每個組件自己均在DevEco上演練、分析、總結(jié)過的。

《鴻蒙操作系統(tǒng)開發(fā)入門經(jīng)典》書中對于組件的講解跟開發(fā)文檔有很多雷同,但不影響學(xué)習(xí)。且其中創(chuàng)新部分,令人也有學(xué)習(xí)動力。

經(jīng)過這段時間的學(xué)習(xí),對Ability-Page-XML三者關(guān)系、設(shè)置默認(rèn)路由、頁面生命周期、部分API、組件部分屬性、組件對應(yīng)響應(yīng)事件的掌握,都有了系統(tǒng)性的提升。

各個覺得需要重復(fù)練習(xí)的組件

  • TextField
  • TabList和Tab
  • CheckBox和RadioButton-RadioContainer

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-07-29 09:55:59

鴻蒙HarmonyOS應(yīng)用

2021-07-21 15:33:03

鴻蒙HarmonyOS應(yīng)用

2010-05-07 17:31:42

Unix類操作系統(tǒng)

2010-08-24 15:26:32

SolarisUnix

2009-07-10 09:40:16

Google操作系統(tǒng)Chrome市場

2011-06-23 09:40:32

操作系統(tǒng)開源

2010-04-23 09:23:25

Aix操作系統(tǒng)

2010-05-04 17:17:46

Unix類

2012-03-14 10:51:49

Tizen

2024-09-09 18:36:57

2021-06-09 15:15:10

鴻蒙HarmonyOS應(yīng)用

2012-09-03 11:11:29

WebOS開源

2020-12-10 09:48:15

鴻蒙Linux開發(fā)

2010-04-09 09:11:20

Unix操作系統(tǒng)

2024-12-03 17:00:45

2009-01-22 10:31:28

2013-01-10 13:50:25

Android開發(fā)組件

2009-12-09 17:25:19

Linux操作系統(tǒng)

2009-03-18 09:28:14

Linux操作系統(tǒng)技巧

2020-10-25 08:52:19

Unix操作系統(tǒng)TrueOS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號