精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HarmonyOS《鴻蒙操作系統開發入門經典》|第二篇 第3章

開發 前端 OpenHarmony
本文包含筆者對徐文禮老師的《鴻蒙操作系統開發入門經典》的學習過程中的筆記總結、拓展思考、案例反饋、閱讀體驗。

[[412412]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

本文引言

時間:2021年7月15日08:35:27

本文包含筆者對徐文禮老師的《鴻蒙操作系統開發入門經典》的學習過程中的筆記總結、拓展思考、案例反饋、閱讀體驗。

為尊重老師的知識產權和精簡本文,本文不會粘貼代碼、倒置案例、機械打字。

DevEco開發文檔

第3章 鴻蒙ACE Java 應用框架

時間:2021年7月15日08:37:02

ACE(Ability Cross-platform Environment),即面向元能力的跨平臺開發運行環境。

用來開發鴻蒙富設備應用程序

拓展思考:

富設備:是華為首提,相對于輕量級設備(如 Lite wearable 內存有限、功能有限)。所謂“富設備”,指的是使用頻率高、強交互的設備,比如白板、投影儀、電視機、電子本等。

開發文檔拓展(時間:2021年7月16日10:19:31):

Java UI框架提供了一部分Component和ComponentContainer的具體子類,即創建用戶界面(UI)的各類組件,包括一些常用的組件(比如:文本、按鈕、圖片、列表等)和常用的布局**(比如:DirectionalLayout和DependentLayout)。**

組件和布局

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

Component和ComponentContainer

  • Component:提供內容顯示,是界面中所有組件的基類,開發者可以給Component設置事件處理回調來創建一個可交互的組件。Java UI框架提供了一些常用的界面元素,也可稱之為組件,組件一般直接繼承Component或它的子類,如Text、Image等。
  • ComponentContainer:作為容器容納Component或ComponentContainer對象,并對它們進行布局。Java UI框架提供了一些標準布局功能的容器,它們繼承自ComponentContainer,一般以“Layout”結尾,如DirectionalLayout、DependentLayout等。

LayoutConfig

每種布局都根據自身特點提供LayoutConfig供子Component設定布局屬性和參數,通過指定布局屬性可以對子Component在布局中的顯示效果進行約束。例如:“width”、“height”是最基本的布局屬性,它們指定了組件的大小。

組件樹

布局把Component和ComponentContainer以樹狀的層級結構進行組織,這樣的一個布局就稱為組件樹。組件樹的特點是僅有一個根組件,其他組件有且僅有一個父節點,組件之間的關系受到父節點的規則約束。

3.1 ACE運行時簡介

時間:2021年7月15日09:16:30

  • 除開很多資料都有的ACE支持主流生態語言【Java、JS(JavaScript)】外,新知識,未來將支持華為自己的開發語言**“倉頡”**

拓展思考:

據查:華為倉頡公司真實存在,且類別是研發設計。大華為生態下,自己的開發語言勢在必行。希望倉頡可以正兒八經的推出、穩穩當當的推行。期待!

  • 對ACE圖的理解

 學習思考:

此圖可以提煉出一點,Java是命令式,JS是聲明式的。

3.1.1 ACE針對全場景開發

  • 老生常談1+8+N

對于這個N,要提一提,N泛指其他IoT設備

  1. 富設備-Java、C++語言的開發框架
  2. 輕設備-JavaScript的開發框架(可以讓IoT設備運行鴻蒙應用程序)

拓展學習:

IoT設備:IoT(Internet of Things),即物聯網。在HMS(華為移動服務)生態下的觸控筆、智能燈、遙控板等設備也會應用。

3.1.2 ACE 支持的兩種UI框架

學習總結:

這里的講的都是UI框架,對于其他框架層(用戶程序框架、Ability框架)還沒講。下面這兩張圖完全展示了其關系。再往外的話就是HarmonyOS四層系統架構了(內核、服務、架構、應用)

UI:(User Interface)UI 框架是基于前端框架做的框架。

時間:2021年7月15日23:43:07

注:

今兒寫了好多稿子**《彌憾》、《夢蝶》、《氣沖2》,對于本書的學習就延后到了接近十二的,但沒事!把3.2學完再睡。確實是學校這邊我看到了令我特別感慨的一件事情,然后做了一個招生簡章分析和鴻蒙學習路線,其次是對于原子化卡片服務,我就感覺應該有一個大體的指引方向,就根據社區的文章進行總結發散,最后就是李老師的智慧家居的直播實在是將得特別好,很接地氣,對于南向開發,我就不用開發板了(沒錢)哈哈哈。在徐老師這本書的帶領下,把OpenHarmony**的一些基本的搞明白就行。

  • 基于Java的應用程序框架(ACE Java UI)

  • 基于JavaScript的應用開發框架(ACE JavaScript UI)

學習思考:

JavaScript的語法規則基本遵循ES6的語法規范。

ES6:ECMAScript 6

前端開發人員,可以使用HTML+CSS+JavaScript的形式進行應用的開發

后端開發人員,目前只能使用Java語言進行開發,所以對于JavaScript的開發者,依然需要Java語言的輔助。

3.2 ACE開發中的核心概念

時間:2021年7月16日00:13:15

對一些核心概念的介紹

3.2.1 Ability與Slice

  • 書中用畫板與畫紙來舉例子,畫板是Ability,畫紙是Slice。

學習思考:

Slice是子頁面的意思。Ability是用戶程序的基本組成部分。下圖是關于Ability的一些介紹。

3.2.2 Ability的分類

兩大類

FA(Feature Ability)有界面,可交互

PA(Page Ability)無界面,提供一些應用運行需要的能力。對于PA有兩類模板:

  • FA:元程序
  • PA:元服務

Service模板(SA):用于提供后臺運行任務的能力

Data模板(DA):用于對外部提供統一的數據訪問能力

3.2.3 鴻蒙應用包結構

  • 鴻蒙應用軟件包以APP Pack(Application Package)發布,由一個或多個HAP(HarmonyOS Ability Package)以及每個HAP屬性的pack.info組成。

學習查詢:

package-info.java 包的作用

為標注在包上的Annotation提供便利

聲明包的私有類和常量

提供包的整體注釋說明

學習思考:

一些縮寫的總結:

HPM(HarmonyOS Package Manager):鴻蒙包管理器

HVD(HarmonyOS Virtual Device):鴻蒙虛擬機

ACE(Ability Cross-Platform Environment):Ability跨平臺環境

HAP(HarmonyOS Application Package):鴻蒙應用程序包

BMS(Bundle Manager Service):Bundle管理服務

AMS(Ability Manager Service):Ability管理服務

DMS(Distribute Manager Service):分布式管理服務

HDF(HarmonyOS Driver Foundation):鴻蒙驅動框架

HMS(Huawei Mobile Service):華為移動服務

HAR(HarmonyOS Achieve):鴻蒙庫

HML(HarmonyOS Markup Language):鴻蒙標記語言

HAP是Ability的部署包,HarmonyOS應用代碼圍繞Ability組件展開。

一個HAP是由代碼、資源、第三方庫應用配置文件組成的模板包,分為:

  • entry:應用主模板。有且只有一個,可獨立運行。
  • feature:應用的動態特性模板。只有包含Ability的HAP才能獨立運行。

3.3 創建一個ACE Java項目

時間:2021年7月16日09:35:35

  • 這一節的目標

創建項目

布局里放置文本框(顯示數字)

添加按鈕(每次單擊按鈕讓文本框的數字加1)

3.3.1 創建ACE項目

小吐槽:

不得不說,因為鴻蒙迭代很快,DevEco也變得很快,書里的用圖是以前版本的,現在的DevEco是如下所示。

很簡單的流程不贅述,創建Java項目(first_demo),并進行預覽。

3.3.2 編寫布局

書中的代碼均沒有格式化!!!!!

  • 在src/main/resources/base/layout/ability_main.xml文件下,添加Text組件和一個Button組件。
  • 為通過Button屬性background_element引入,background_element的值**$graphic表示引用graphic文件夾**。background_ability_main是graphic文件夾下的xml文件。

學習總結:

在編寫頁面布局的預覽的時候,發現一個問題,書上給的是1080 X 2250的但現在模擬器上是1080 X 2340

根據組件的功能,可以將組件分為布局類、顯示類、交互類三類:

關于ACE Java中的屬性:

  1. //DirectionalLayout 
  2. //  對齊方式 
  3. ohos:alignment="center" 
  4. //子布局排列方向 
  5. ohos:orientation="vertical" 

虛擬像素單位:vp

虛擬像素(virtual pixel)是一臺設備針對應用而言所具有的虛擬尺寸(區別于屏幕硬件本身的像素單位)。它提供了一種靈活的方式來適應不同屏幕密度的顯示效果。

字體像素單位:fp

字體像素(font pixel) 大小默認情況下與 vp 相同,即默認情況下 1 fp = 1vp。如果用戶在設置中選擇了更大的字體,字體的實際顯示大小就會在 vp 的基礎上乘以 scale 系數,即 1 fp = 1 vp * scale。

3.3.3 編寫界面邏輯代碼

時間:2021年7月16日10:32:38

  • 實現“單擊加1“的功能

時間:2021年7月16日11:55:55

3.3報錯了

  • 第二天修正繼續

時間:2021年7月17日10:51:58

  • 建立了另外一個Project(demo20210717),然后把頁面布局做了出來

對比了一下,好像這個布局才是正確的,昨天做的是按鈕居中。

然后繼續!編寫界面邏輯

  • 發現,,,錯誤是標簽無法識別。所以我就查Text在哪個類,原來在Component。然后就AIt+enter,進行了import。
  1. import ohos.agp.components.Component; 
  • 最后運行結果如下:

學習體驗:

書中沒有對Text接口進行說明,因為這里我們敲下來,需要對Text進行import。

3.3.4 通過模擬器預覽效果

學習總結:

  • Tools-HVD-Manager-install-選擇模擬器
  • 現在可供選擇的模擬器有很多

3.3.5 日志HiLog的使用

時間:2021年7月17日11:23:29

  • 場景:在編寫過程中,需要通過打印一條條日志來掌握程序運行的狀態
  • 在HiLog的輔助類HiLogLabel中定義日志類型、服務域、標記。

一般把它定義位常量并放在類的最上面

  1. static final HiLogLabel label =new HiLogLabel(HiLog.LOG_App,Ox00201,"My_TAG"); 

三個參數:

  • HiLog.LOG_App(日志類型)一般取常量,表示第三方應用
  • Ox00201(服務域),十六進制形式。建議前三個數表示應用中的模塊編號,后面兩個數表示模塊中的類型
  • “My_TAG”(一個字符串常量)。標識方法調用的類或服務行為,一般情況寫類的名字,可以用這個標記對日志過濾。

日志的級別(從低到高):

  • debug(調試信息)
  • info(普通信息)
  • warn(警告信息)
  • error(錯誤信息)
  • fatal(致命錯誤信息)

高級應用(private和public修飾符)

  1. String URL=“XXX”; 
  2.     int errno=0; 
  3.     HiLog.warn(label、"Failed to visit %{private},reason:%{public}d.",URL,errno); 

%{}表示位置,其中s是輸出內容,輸出時不顯示內容;d是輸出的內容,輸出時正確顯示。

學習思考:

3.4 ACE Java 項目目錄結構

時間:2021年7月17日11:41:22

3.4.1 項目整體結構

  • 一個應用由一個或多個HAP包所組成,HAP包又可以分為entry和feature類型,每個HAP包由代碼、資源、第三方庫及應用配置文件組成。

所以entry就是一個應用的HAP包,一個entry類型的HAP包

時間:2021年7月19日08:55:02

  • 項目整體架構

  • test是測試目錄
  • libs是用來存儲或引用第三方包**(jar包,so包)**
  • build是用來存放最終編譯后的包**(HAP包)**

3.4.2 項目的配置文件

時間:2021年7月19日08:57:33

配置文件為config.json主要桑模塊:

  • app:表示應用的全局配置,同APP中各個HAP中的app必須一樣
  • deviceComfig:表示應用在具體設備上的信息
  • module:表示HAP包的配置信息,只對當前HAP包生效

拓展學習(開發文檔-開發基礎知識-應用配置文件-配置文件的元素:

json格式、順序無關、有且僅有

APP:

deviceConfig

具體內部要使用的時候直接查就行

module:

module下的ability配置不同的主題:

在開發文檔表十。

3.4.3 資源文件的使用方式

時間:2021年7月19日12:41:18

  • 目錄中的資源文件除開profile目錄中的文件以外其余文件會被編碼為二進制文件,并賦予資源文件ID,可以用ResourceTable引用
  • 限定目錄需要開發者自行創建

目錄名稱由一個或多個表征應用場景或設備特征的限定詞組合而成,包括語言、文字、國家或地區、橫豎屏、設備類型和設備密度等六個方面。

順序:語言_ 文字 _國家和地區 -橫豎屏-設備類型-屏幕密度(連接方式見此)

說實話這部分資源文件的引用這部分不是很懂。暫且放著吧

3.5 ACE Java UI 布局

時間:2021年7月19日12:49:01

兩種布局方式:

  • XML方式聲明UI布局
  • 代碼方式創建UI布局

系統默認XML方式聲明UI布局

XML聲明式布局的方式更加簡便直觀,編程創建布局的方式比較麻煩,需要在AbilitySlice中分別創建組件和布局,并將它們進行組織關聯。

3.5.1 通過XML的方式創建布局

時間:2021年7月20日08:29:16

3.5.1和3.5.2中的3-4和3-5中的代碼全是開發文檔中的代碼,書中的文字也是開發檔案中的文字。

例子3-4

  • 創建xml布局:entry-src-main-resources-layout-new-File-XXX.xml
  • match_parent: 表示組件大小將擴展為父組件允許的最大值,它將占據父組件方向上的剩余大小
  • match_content:表示組件大小與它的內容占據的大小范圍相適應
  • 代碼中加載XML布局,并添加為根布局或作為其他布局的字Component
  • 例3-5

3.5.2 通過編碼的方式創建布局

時間:2021年7月20日09:28:19

3.5.1和3.5.2中的3-4和3-5中的代碼全是開發文檔中的代碼,書中的文字也是開發檔案中的文字。

  1. 聲明布局
  2. 創建組件
  3. 編碼布局案例
  • 例3-6

基于3.5.1和3.5.2的學習思考:

書上的所呈現的內容令我很失望,不管是代碼,還是方法總結都是開發文檔的內容。缺少一點從初學者的角度對工程建立過程進行引導,缺少一點從初學者的角度對為啥這么敲代碼進行一個簡單的解釋。甚至缺乏從示例代碼到示例效果圖的完整流程。

3.5.1的代碼3-5敲完以后編譯,會面臨如問題:

當然找不到呀,首先Layout_first_layout和Id_button根據開發文檔的import的

別人肯定是在Myapplication創建了ResourceTable的。所以這里要進行import。

  1. //敲代碼的時候自帶的 
  2. import ohos.global.systemres.ResourceTable; 
  3. //改為com.hairtail.first_demo這就是自己的項目,可以用自己的xml 
  4. import com.hairtail.first_demo.ResourceTable; 

自己的名目名字在那里看:

最后成功結果:

3.5.2的代碼3-6敲完以后編譯,會面臨如問題:

會直接跳轉到之前3-1,3-2,3-3的點擊加一的界面,其原因肯定是MainAbility中的setMainRoute設置的不得勁。應該設置為:

  1. super.setMainRoute(ExampleAbilitySlice.class.getName()); 

然后就呈現出效果圖了。

3.5.3 鴻蒙常見布局方式

時間:2021年7月20日10:26:30

  • Java UI框架中,具體的布局類通常以XXLayout命名

  • Java UI框架中提供的標準布局功能的容器都繼承自ComponentContainer但有些組件繼承自StackLayout并沒有以Layout結尾:ScrollView、PageSlider。ListContainer組件同樣繼承自ComponentContainer。

書上對這些東西就提一嘴,emm,學習的時候還是要保持對知識的好奇心!

學習拓展:

(from 開發文檔)

ScrollView是一種帶滾動功能的組件(交互類),它采用滑動的方式在有限的區域內顯示更多的內容。共有XML屬性繼承自:StackLayout

PageSlider(看了開發文檔的示例感覺這個組件會很好用)是用于頁面之間切換的組件,它通過響應滑動事件完成頁面間的切換。PageSlider無自有的XML屬性,共有XML屬性繼承自:StackLayout

ListContainer是用來呈現連續、多行數據的組件,包含一系列相同類型的列表項。ListContainer的共有XML屬性繼承自:Component

**從3-7到3-17都是對布局的示例。

學習體驗:

張榮超老師的手表開發中也有補充布局這塊的知識,這次相當于一個溫故的過程,也希望可以知新。

1.定向布局DirectionalLayout

  • DirectionalLayout布局類似Android中的LinearLayout
  • DirectionalLayout屬性:

學習補充:

  • 重點在排列屬性、對齊屬性、權重屬性

(1)排列屬性

時間:2021年7月20日11:05:00

vertical:垂直

horizontal:水平

  • 元素之間會被截取
  • 示例3-7

學習提要:

為了使案例隔離,需提前創建demo1Slice,并在其中創建布局,然后在mainability中配置路由,最后就是在Layout中創建各種Layout啦。代碼如下(貼代碼是因為該代碼是自己加的,不管書上的事。QAQ):

  1. //demo1Slice.java 
  2. package com.hairtail.first_demo.slice; 
  3.  
  4. import ohos.aafwk.ability.AbilitySlice; 
  5. import ohos.aafwk.content.Intent; 
  6. import com.hairtail.first_demo.ResourceTable; 
  7.  
  8. public class demo1Slice extends AbilitySlice { 
  9.     @Override 
  10.     protected void onStart(Intent intent) { 
  11.         super.onStart(intent); 
  12.         super.setUIContent(ResourceTable.Layout_ability_second); 
  13.     } 
  1. //配置路由 
  2. super.setMainRoute(demo1Slice.class.getName()); 

學習探索:

  • 創建偷懶小技巧:不用書中的通過File創建直接通過系統給的Layout Resource File創建,可以通過填寫布局的樣式,創建完畢后自動生成一些代碼,就不用從0開始了。

  •  排列屬性垂直

  • 排列屬性水平且被截取

思考拓展:

  • 這里被截取了,有什么處理方式可以不讓截取呢。試了試match_parent和match_content都不行。那怎么才行,就是后面的權重屬性(weight),這塊放到后面去詳細學習。
  • 這里對色塊顏色做了一個調整,因為書上是有顏色區別的,其目的四展示三個容器之間的排列順序問題。所以我們也要進行顏色區別,再就是這里左邊提供了取色器,可以選擇顏色。

(2)對齊屬性

  • 對齊屬性的樣式表在我之前的拓展里有
  • 對齊屬性的演示

top、vertical_center、bottom屬性的展示

上面的示例是為了體驗其寬度累加。

  • vertical下的left、horizontal、right

(3)權重屬性

權重(weight)就是按比例來分配組件占用父組件的大小

  • 演示1 : 2 : 1

學習探索:

嘗試3: 1 : 2

2.依賴布局DependentLayout

時間:2021年7月20日12:29:50

  • DependentLayout與DirectionalLayout相比,擁有更多的排布方式,每個組件可以指定相對于其他同級元素的位置,或者指定相對于父組件的位置。
  • DependentLayout相當于Android中的相對布局RelativeLayout

學習補充:

(from 開發文檔)

DependentLayout所包含組件可支持的XML屬性表中需要注意的:

  • left_of與start_of、end_of屬性有沖突,不建議一起使用。在“水平布局方向為從左到右”時,left_of會與start_of屬性沖突;在“水平布局方向為從右到左”時,left_of會與end_of屬性沖突。
  • 同時配置時,start_of、end_of優先級高于left_of屬性。
  • align_parent_left與align_parent_start、align_parent_end屬性有沖突,不建議一起使用。在“水平布局方向為從左到右”時,align_parent_left會與align_parent_start屬性沖突;在“水平布局方向為從右到左”時,align_parent_left會與align_parent_end屬性沖突。
  • 同時配置時,align_parent_start、align_parent_end優先級高于align_parent_left屬性。

學習體驗:

書本示例代碼==沒有代碼格式化==,導致敲代碼的時候,需要不停的找。這一點的感覺不是很好。

  • 示例3-8

學習拓展:

  • Text屬性italic,文本是否斜體字體,ohos:italic=“true”、ohos:italic=“$boolean:true”。
  • text_front

書中的:似乎感覺是錯的。等調試康康。

  1. ohos:text_font="serif" 

果不其然代碼出現了問題,

其一,關于text_front的用法出現了問題

其二,按照示例代碼敲的效果圖如下:

其原因經過調試發現,各個組件默認從左到右排列,所以Previous的按鈕在next的左邊,被截取了。把ohos:left_of=“id:button2"改為ohos:right_of="id:button2"改為ohos:righto​f="id:button2”,效果如下:

所以為了達到書上的效果,就需要把Next按鈕放在最右邊。

也就是在Next按鈕里加上與父組件的依賴關系。

  1. ohos:align_parent_right="true" 

時間:2021年7月20日13:24:23

我突然發掘,書上是給了源碼的,,,嘖嘖嘖,,我去看看源碼

,,我一調試發現是對的,我懷疑我自己是不是敲錯了。結果我結果檢查(無語子)和調試發現,源碼是改了的。如下(因為老師的源碼我打了碼):

跟我的處理方式是一樣的,證實了==三個觀點==:

  • 書中和源碼中的ohos:text_font="serif"使用都不符合現在的開發文檔
  • 隨著版本迭代,書中的代碼的確有問題(但老師給的源碼是修正了的)。這跟張榮超老師關于呼吸手表開發一書中的代碼錯誤是一樣的。需要讀者自行調試。
  • 自己對于示例3-8的解決方法是正確的,調整子組件與父組件的關系即可。

3.表格布局TableLayout

時間:2021年7月20日13:43:16

學習補充:

學習體驗:

非常抱歉的說,3-9的示例代碼跟開發文檔是一樣的,且開發文檔的示例更豐富一些。

  • TableLayout類似于Android的TableLayout。(嘖嘖,就是一樣的嘛)
  • 通過設置行數和列數來控制表格內組件的行和列
  • 示例3-9

4.位置布局PositionLayout

時間:2021年7月20日13:46:58

學習體驗:

此頁面原創,且其鴻蒙TV管理系統頁面貼近鴻蒙,適應主題。

學習補充:

對于超過布局本身大小的組件,超出部分將不顯示。

PositionLayout以坐標的形式控制組件的顯示位置,允許組件相互重疊。

(0, 0)為左上角;當向下或向右移動時,坐標值變大;允許組件之間互相重疊。

PositionLayout開發文檔提供的案例

本示例演示了PositionLayout的一些特性,包括子組件位置的影響和超越屏幕大小后子組件的顯示規則。

  • PositionLayout為絕對布局,該布局指定了子組件在其中的具體位置(X/Y坐標)
  • 布局靈活性相對較差,在沒有絕對定位的情況下相比其他類型的布局更難以維護。
  • 示例3-10,示例3-11

學習體驗:

  • 這里的ability_five.xml是缺失的,3-10直接就是ability_six.xml。不知道怎么回事。但源碼里有ability_five.xml。
  • 這里需要在源碼那里把圖片CV一下。

下面這行關于圖片src的引用就出現了報錯。源碼和書中都有問題。

  1. ohos:image_src="$media:log.png" 

學習總結:

‘.’ is not a valid resource name character

“.”不是有效的資源名稱字符

Validates resource references inside Harmony XML files

驗證XML文件中的資源引用

所以解決方式是改成如下模樣:

  1. ohos:image_src="$media:log" 

即可。

  • 示例3-10,3-11,3-12

學習體驗:

  • 其一,書中并沒有提醒讀者關于config.json文件的修改,在代碼和效果圖直接呈現的溝壑需要讀者自行跨越。這里需要大家在config.json中把"deviceType"加上“tv”注意:這里tv不能是TV。

  • 其二,書中和源碼中對于image組件下image_src的使用不規范(書中和源碼中是:ohos:image_src=“media: log.png"),應該參照開發文檔和DevEco的提示改成ohos:image_src="media:log.png"),應該參照開發文檔和DevEco的提示改成ohos:images​rc="media: log”。

5.堆疊布局StackLayout

時間:2021年7月20日14:42:27

注:

很遺憾,這一塊也還是開發文檔的示例。

學習補充:

  • StackLayout直接在屏幕上開辟出一片空白的區域,添加到這個布局中的視圖都是以層疊的方式顯示。
  • 默認放到左上角,第一個添加到布局中的視圖顯示在最底層,上一層的視圖會覆蓋下一層的視圖。
  • StackLayout相當于Android 中的幀布局FrameLayout
  • 示例3-13

  • 3-14(源代碼沒有-但這里的代碼量很少)

使用layout_alignment屬性可以指定組件在StackLayout中的相對位置(這兒是把Button添加到StackLayout的右邊)

  • 3-15將子視圖從后面移到前面(同樣源代碼里么有)

3-15完全不知道寫在那里。源代碼里也沒有找到。其實應該在mainability中去設置setClickedListener。

6.自適應布局AdaptiveBoxLayout

時間:2021年7月20日15:39:58

學習補充:

自適應組件的開發文檔

自適應布局的常用方法

AdaptiveBoxLayout意為自適應盒模式布局,是將整個UI劃分為相同寬度,但高度可能不同的行和列的盒子。

  • 盒子寬度取決于布局的寬度和盒子數量
  • 每個盒子的高度由其子組件的高度決定
  • 子組件的排列只有在前一行被填滿后才會開始在新一行中占位
  • 每一行的高度由該行最高盒子決定
  • 布局的寬度只有MATCH_PARENT或固定值
  • 可以為布局黨的組件設置長度、寬度和對其方式

示例3-16,3-17(源代碼里無)

哥們兒稀碎!源代碼沒有ability_eight的代碼,三頁半的代碼!我的天。

敲了一半不服氣,去看了源代碼!發現源代碼的ability_five就是ability_eight

!!!破案了。

學習思考:

同樣的問題

  1. ohos:image_src="$media:icon_more" 

 

小總結

學習《鴻蒙操作系統開發入門經典-徐禮文》已經到89/477頁了,第三章的內容也學了一半。做一個總結。

  • 其中關于有一些鴻蒙特有的概念解釋還是有一些遺漏。(富設備、IoT設備)
  • 本書作者對開發過程的一些描述有自己的看法(page和slice的關系-畫板畫布)
  • 本書在示例代碼和源代碼方面有一些問題

1.關于示例代碼在哪個文件下有些示例并未說明

2.示例代碼與開發文檔給的示例代碼有重疊,給讀者體驗下降。(3-4、3-5、3-6、3-9、3-13、3-14、3-15)

3.源代碼的ability_five就是ability_eight。名稱不一樣,會給讀者帶來困擾。

4.在3-10、3-11、3-12的鴻蒙TV絕對布局的例子中,書中并沒有提醒讀者關于config.json文件的修改,需要讀者自行去跨越代碼到效果圖的溝壑。

5.書中和源碼中的ohos:text_font="serif"使用都不符合現在的開發文檔

6.書中和源碼中對于image組件下image_src的使用不規范(書中和源碼中是:ohos:image_src=“media: log.png"),應該參照開發文檔和DevEco的提示改成ohos:image_src="media:log.png"),應該參照開發文檔和DevEco的提示改成ohos:images​rc="media: log”

7.著版本迭代,書中的代碼的確有問題(但老師給的源碼是修正了的),3-8表格布局中,這一行代碼的缺失,ohos:align_parent_right=“true”

雖然問題還是有,但方法總比困難多,加上今天老師回帖,之后有視頻上線,也會有新的案例。


寫筆記的初衷還是給自己的一個輸出過程,也是一種學習反饋和激勵。當然也希望通過自己的筆記,幫助其他讀者在學習中解決遇見的疑惑!

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-07-29 09:55:59

鴻蒙HarmonyOS應用

2021-07-27 11:39:40

鴻蒙HarmonyOS應用

2011-06-21 10:28:49

Oracle

2017-04-10 14:46:29

AndroidGradleBuild.gradl

2014-03-28 13:30:36

2019-11-25 09:45:27

IBMIBM Cloud P多云

2020-04-29 21:54:46

操作系統核心概念

2022-08-02 10:26:09

網絡層網絡網絡協議

2011-03-14 16:05:17

2021-07-10 07:39:38

Node.js C++V8

2023-05-11 20:15:36

2019-11-26 16:31:22

IBM

2021-01-14 12:06:22

鴻蒙HarmonyOSAI應用

2020-11-06 11:58:01

hi3681

2009-07-10 09:40:16

Google操作系統Chrome市場

2011-06-23 09:40:32

操作系統開源

2019-07-31 12:34:23

數字化轉型云計算架構

2010-04-23 09:23:25

Aix操作系統

2014-01-16 11:14:37

StormTopology

2021-06-09 15:15:10

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

国产精品免费精品自在线观看| 国产区av在线| 狠狠色综合网| 日韩精品在线免费播放| 无遮挡又爽又刺激的视频| h视频在线免费| 国产乱码一区二区三区| 91po在线观看91精品国产性色| 级毛片内射视频| 国产精品成人3p一区二区三区| 亚洲国产欧美在线| 亚洲精品一卡二卡三卡四卡| h片在线免费看| 国产精品一卡| 欧美成人午夜激情在线| 五级黄高潮片90分钟视频| 国产精品久久乐| 欧美日韩国产精品一区二区三区四区 | 希岛爱理中文字幕| 日韩精品免费一区二区夜夜嗨 | 国产精品亚洲a| 羞羞电影在线观看www| 久久日韩粉嫩一区二区三区 | 国产精品宾馆| 欧美高清dvd| 999香蕉视频| 丰满大乳少妇在线观看网站| 日韩美女啊v在线免费观看| 九九九九久久久久| 精品国产av一区二区| 水蜜桃久久夜色精品一区的特点 | 91精品产国品一二三产区| 亚洲人成影院在线观看| 色姑娘综合网| 久久久久久青草| 97久久精品人人爽人人爽蜜臀| 91免费精品视频| 一级成人免费视频| 奇米色一区二区| 国产成人aa精品一区在线播放| 天堂资源在线播放| 欧美精品97| 社区色欧美激情 | 免费观看av网站| 亚洲第一福利专区| 亚洲激情国产精品| 国产一线在线观看| www.国产精品一区| 精品国产凹凸成av人导航| 黄色片子免费看| 国产麻豆一区二区三区| 在线成人免费观看| 免费网站在线观看黄| 91精品网站在线观看| 欧美精品在线视频| 999久久久精品视频| 图片一区二区| 在线播放91灌醉迷j高跟美女| 日本免费色视频| 久久av日韩| 5566中文字幕一区二区电影| 中文字幕亚洲影院| 国产高清视频一区二区| 欧美一区二区三区在线观看视频| 涩涩网站在线看| 国产精品中文| 亚洲国产成人在线播放| 无码人妻aⅴ一区二区三区| 日本三级久久| 一区二区三区四区精品| 黄色av片三级三级三级免费看| 久久久综合色| 欧美另类99xxxxx| 精品少妇爆乳无码av无码专区| 伊人成人在线| 久久综合88中文色鬼| 成人网站免费观看| 国产精品一区高清| 色爱av美腿丝袜综合粉嫩av| 国产黄色的视频| 亚洲大片av| 日本精品一区二区三区在线播放视频| 久久露脸国语精品国产91| 亚洲欧美日韩国产综合精品二区 | 99久久综合色| 日韩精品伦理第一区| 日本在线视频观看| 亚洲大片在线观看| 黑鬼大战白妞高潮喷白浆| 精品久久在线| 精品999久久久| 51妺嘿嘿午夜福利| 欧美日本一区二区视频在线观看| 欧日韩不卡在线视频| 伊人网视频在线| 丰满白嫩尤物一区二区| 秋霞在线观看一区二区三区| 黄色动漫在线| 大桥未久av一区二区三区| 污片在线免费看| 黑人久久a级毛片免费观看| 亚洲欧洲第一视频| 九九精品在线观看视频| 日本一不卡视频| 国产精品久久久久久免费观看 | 国产一区二区三区亚洲| 在线精品视频视频中文字幕| 18精品爽视频在线观看| 狂野欧美一区| 国产精品久久一区二区三区| 欧美精品hd| 天天爽夜夜爽夜夜爽精品视频| 国产嫩草在线观看| 日本国产精品| 欧美精品一本久久男人的天堂| 国产一级淫片a视频免费观看| 国产麻豆午夜三级精品| 欧美亚洲另类在线一区二区三区| 最新国产在线拍揄自揄视频| 欧美性大战久久久久久久 | 91偷拍与自偷拍精品| 麻豆一区二区三区在线观看| 欧美va在线| 日韩精品一二三四区| 欧美日韩中文字幕在线观看| 美女一区二区视频| 欧美国产一二三区| mm视频在线视频| 日韩一级大片在线观看| 少妇高潮在线观看| 热久久免费视频| 日本午夜精品一区二区| 在线天堂新版最新版在线8| 日韩一区二区三区视频在线| 99热99这里只有精品| 日韩高清不卡一区二区三区| 免费日韩av电影| 国产精品xx| 欧美精品一区二区三区蜜臀| 我要看黄色一级片| 国内精品视频一区二区三区八戒| 天天好比中文综合网| 成人一区福利| 精品一区二区三区三区| 国产成人精品网| 97久久超碰精品国产| 国产日韩av网站| 国产精品一区二区中文字幕| 欧美激情性做爰免费视频| 性生活视频软件| 一区二区在线观看免费视频播放| 中文字幕在线视频一区二区| 亚洲色图88| 成人亚洲欧美一区二区三区| 免费黄色电影在线观看| 欧美剧情片在线观看| 国产喷水在线观看| 国产在线播放一区| 成人在线视频一区二区三区 | 国产在线精品一区| 多野结衣av一区| 精品亚洲一区二区三区| 国产午夜麻豆影院在线观看| 欧美激情中文字幕| 亚洲一区日韩精品| 欧美日韩1区| 精品无人区一区二区三区| 国产精品电影| 国产一区二区久久精品| 国产精品久久久国产盗摄| 亚洲码国产岛国毛片在线| 天天躁日日躁狠狠躁av| 久久久久久久波多野高潮日日| 亚洲aⅴ天堂av在线电影软件| 欧美亚洲黄色| 欧美激情日韩图片| 日本视频在线观看一区二区三区 | 99久久精品国产一区二区成人| 一区二区三区四区不卡视频 | 欧美调教视频| 国产精品久久久久久久久男| 国产激情在线观看| 亚洲成人在线视频播放| 成年人视频免费| 亚洲人吸女人奶水| 少妇大叫太粗太大爽一区二区| 免费在线视频一区| 日韩亚洲欧美视频| 欧美亚洲激情| 痴汉一区二区三区| 黄色成人免费网| 欧美成人一区二区三区电影| 四虎在线视频| 制服.丝袜.亚洲.另类.中文| 日韩女优在线观看| 自拍偷拍亚洲综合| 亚洲一级中文字幕| 国产福利一区二区| 北条麻妃视频在线| 在线成人国产| 吴梦梦av在线| 亚洲性视频大全| 99蜜桃在线观看免费视频网站| 国产超碰精品| 欧美精品福利视频| 日本不卡视频| 亚洲欧美激情精品一区二区| 精品人妻少妇嫩草av无码专区| 色偷偷一区二区三区| 久久久久久久黄色| 国产精品视频一二三| 欧美一级片黄色| 国内欧美视频一区二区| 成人3d动漫一区二区三区| 黄色日韩在线| 六月婷婷激情网| 精品视频亚洲| 欧美亚洲精品日韩| 欧美调教在线| 国产自产在线视频一区| 人人爱人人干婷婷丁香亚洲| 国产精品一二三视频| 小视频免费在线观看| 久久久久久com| av在线麻豆| 精品国内产的精品视频在线观看| 欧美新色视频| 日韩国产一区三区| 六月婷婷中文字幕| 日韩欧美成人激情| h片在线免费看| 91精品欧美一区二区三区综合在| 波多野结衣二区三区| 日韩欧美精品在线观看| 久久久午夜影院| 疯狂欧美牲乱大交777| 国产亚洲精品久久久久久无几年桃 | 天天舔天天操天天干| 91色九色蝌蚪| 中文字幕狠狠干| 久久综合九色综合97婷婷女人 | 亚洲精品成人在线播放| 秋霞电影网一区二区| 青青在线视频免费| 日韩av网站在线观看| 欧美日韩在线观看不卡| 视频一区二区三区入口| 亚洲中文字幕久久精品无码喷水| 久久激情综合| 免费看黄色一级大片| 日韩精品一级中文字幕精品视频免费观看 | 91久久久在线| 日韩免费一级| 国产传媒一区| 天堂99x99es久久精品免费| 精品在线视频一区二区| 夜夜春成人影院| 日本黄网免费一区二区精品| re久久精品视频| 中文字幕一区二区三区在线乱码| 久久一区二区中文字幕| 宅男在线精品国产免费观看| 影视一区二区| 轻点好疼好大好爽视频| 日韩视频一区| 免费男同深夜夜行网站| 美女视频黄a大片欧美| 色www免费视频| 国产福利一区二区三区视频在线| 无码人妻一区二区三区在线| 91伊人久久大香线蕉| 精品成人av一区二区三区| 国产精品你懂的| 男人操女人的视频网站| 亚洲成人免费影院| av一级在线观看| 欧美挠脚心视频网站| 国内爆初菊对白视频| 亚洲欧美中文日韩v在线观看| wwwxxx在线观看| 欧美另类精品xxxx孕妇| 综合日韩av| 91精品在线播放| 国产毛片精品| 亚洲午夜精品福利| 亚洲国产91| 99视频免费播放| 岛国一区二区在线观看| www色com| 亚洲一区影音先锋| 在线免费av片| 日韩av一区二区在线观看| 99re热久久这里只有精品34| 欧美黑人狂野猛交老妇| 亚洲精品在线影院| 999视频在线观看| 精品久久成人| 青青在线免费观看| 老司机午夜精品99久久| 亚洲一级Av无码毛片久久精品| 国产日韩欧美不卡| 欧美极品aaaaabbbbb| 在线观看亚洲专区| 手机在线精品视频| 久久久精品国产网站| 人人视频精品| 国产亚洲一区二区三区在线播放 | 日韩中文娱乐网| bbw在线视频| 999国产在线| 五月激情综合| 亚洲狼人综合干| av在线不卡电影| 国产精品成人免费观看| 在线中文字幕一区二区| 深夜福利在线看| 欧美激情视频在线观看| 巨大黑人极品videos精品| 日本精品一区二区| 午夜在线视频一区二区区别| 女王人厕视频2ⅴk| 国产精品麻豆视频| 日韩电影在线观看一区二区| 精品国产一区二区三区四区四| 毛片在线播放a| 国产精品久久久久久久app| 精品精品精品| 夜夜添无码一区二区三区| 国产精品综合av一区二区国产馆| 18精品爽国产三级网站| 日本乱人伦aⅴ精品| 天堂av在线7| 国外成人在线播放| 哺乳一区二区三区中文视频| 成人在线观看毛片| 国产真实乱偷精品视频免| 最新日韩免费视频| 欧美视频一区二区| 99中文字幕一区| 国产日韩欧美视频| 久久人体视频| 日本国产一级片| 日韩一区欧美小说| 国产乱淫片视频| 欧美老少做受xxxx高潮| 日韩一区二区三区高清在线观看| 中文视频一区视频二区视频三区| 久久66热偷产精品| 男人的午夜天堂| 欧美一区二区福利在线| 宅男在线观看免费高清网站| 亚洲v日韩v综合v精品v| 欧美成人首页| 亚洲麻豆一区二区三区| 五月天激情综合| 你懂的在线看| 国产乱肥老妇国产一区二| 欧美电影一区| 亚洲色图欧美自拍| 一级做a爱片久久| 天天摸夜夜添狠狠添婷婷| 欧美夜福利tv在线| 欧美日韩国产传媒| 午夜大片在线观看| 亚洲资源在线观看| 日本啊v在线| 国产精品免费视频久久久| 天天综合精品| 国产欧美视频一区| 日韩欧美在线免费| 成人在线免费公开观看视频| 91精品中文在线| 一本色道久久| 山东少妇露脸刺激对白在线| 欧美一区二区三区四区视频| 色爱综合区网| 欧美精品亚洲精品| 久久成人久久爱| 日韩av电影网| 色偷偷88888欧美精品久久久| 日韩中文字幕| 成人一级片网站| 亚洲日本护士毛茸茸| 天天干,天天操,天天射| 国产成人精品av在线| 91成人免费| 欧美肉大捧一进一出免费视频| 欧美在线观看一区二区| 丝袜在线观看| 欧美视频观看一区| 国产精品91一区二区| 日本韩国欧美中文字幕| 日韩三级影视基地| 日韩成人av在线资源| 国产精品久久久久久久av福利| 午夜精品福利久久久| 日韩在线免费电影| 免费一区二区三区在在线视频| 激情综合一区二区三区| 国产精品久久久久久久久久久久久久久久久 |