日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

今天繼續(xù)分享有關(guān) HarmonyOS 系統(tǒng)的開發(fā)組件布局類的知識(shí),我們將在此系統(tǒng)上進(jìn)行 App 應(yīng)用開發(fā),主要內(nèi)容是講常用的組件布局類有哪些以及它們的使用方式。

分享的邏輯是先學(xué)習(xí)布局的含義,再講解應(yīng)用框架及示例代碼的調(diào)用邏輯,最后講解運(yùn)行效果圖,大致是按照這種三步曲的節(jié)奏來分享。

第一步:常用組件布局的含義

  1. TableLayout 意為表格布局,也可以稱為網(wǎng)格布局,允許我們使用表格的方式來排列組件,也就是行和列的方式。
     
  2. StackLayout 意為堆疊布局,用于在屏幕上保留一個(gè)區(qū)域來顯示組件,實(shí)現(xiàn)特殊的功能。通常,堆疊布局中只應(yīng)該放置一個(gè)子組件,如果存在多個(gè)子組件,則顯示最新的子組件。
     
  3. DirectionalLayout(單一方向排列布局)是 JAVA UI 的一種重要的組件布局,用于將一組組件按照水平或垂直方向排布,能夠方便地對(duì)齊布局內(nèi)的組件。【ohos:orientation="vertical" 默認(rèn)為垂直方向,可以換成ohos:orientation="horizontal"水平方向】
     
  4. DependentLayout 意為相對(duì)位置布局,與 DirectionalLayout 相比較有更多的排布方式,每個(gè)組件可以指定相對(duì)于其他同級(jí)組件的位置,也可以指定相對(duì)于父組件的位置。可以使用 DependentLayout 布局來實(shí)現(xiàn)更加復(fù)雜的UI界面,同時(shí)也可以和其他布局相結(jié)合組合出需要的UI界面。

 

第二步:系統(tǒng)框架及代碼調(diào)用邏輯

系統(tǒng)框架在里面只用圖片展示一下,不做詳細(xì)說明,前期分享的文章:HarmonyOS (鴻蒙操作系統(tǒng))你值得擁有 有詳細(xì)說明過,如下:

HarmonyOS App開發(fā)之組件布局類

 

MainAbility 就是程序的main入口類,這里會(huì)調(diào)用到 setMainRoute 的方法,傳入的是MainAbilitySlice 這個(gè)類名稱。此類的核心代碼為:

 1@Override
 2public void onStart(Intent intent) {
 3    super.onStart(intent);
 4    super.setUIContent(ResourceTable.Layout_ability_main); // 這里實(shí)際上是要去加載ability_main.xml 布局文件,這里在前面加上一個(gè)Layout_ 是系統(tǒng)要求這樣做的,表明這是一個(gè)布局文件,布局文件詳情在下面有詳細(xì)列出。
 5Button btn_directional = (Button) findComponentById(ResourceTable.Id_directional_layout); // 這里實(shí)際上是在從ability_main.xml 文件中找id 為 directional_layout的元素,并強(qiáng)轉(zhuǎn)為Button類型
 6        if(btn_directional != null){ // 判斷非null 
 7            btn_directional.setClickedListener(new Component.ClickedListener() { //給此id 元素設(shè)置監(jiān)聽事件
 8                @Override
 9                public void onClick(Component component) {
10                    present(new DirectionalLayoutSlice(),new Intent()); // 當(dāng)此id元素被點(diǎn)擊時(shí),就去渲染DirectionalLayoutSlice這個(gè)類對(duì)象,這里的Present()是用來實(shí)現(xiàn)不同的page(ability)內(nèi)的跳轉(zhuǎn)。
11                }
12            });
13        }
14
15        Button btn_dependent = (Button) findComponentById(ResourceTable.Id_dependent_layout);
16        if(btn_dependent!=null){
17            btn_dependent.setClickedListener(new Component.ClickedListener() {
18                @Override
19                public void onClick(Component component) {
20                    present(new DependentLayoutSlice(),new Intent());
21                }
22            });
23        }
24
25        Button btn_stack = (Button) findComponentById(ResourceTable.Id_stack_layout);
26        if(btn_stack != null){
27            btn_stack.setClickedListener(new Component.ClickedListener() {
28                @Override
29                public void onClick(Component component) {
30                    present(new StackLayoutSlice(),new Intent());
31                }
32            });
33        }
34        Button btn_table = (Button) findComponentById(ResourceTable.Id_table_layout);
35        if(btn_table != null){
36            btn_table.setClickedListener(new Component.ClickedListener() {
37                @Override
38                public void onClick(Component component) {
39                    present(new TableLayoutSlice(),new Intent());
40                }
41            });
42        }
43    }

ability_main.xml 詳細(xì)內(nèi)容如下:

 1<?xml version="1.0" encoding="utf-8"?>
 2<ScrollView //滾動(dòng)視圖組件
 3    xmlns:ohos="http://schemas.huawei.com/res/ohos"
 4    ohos:width="match_parent"
 5    ohos:height="match_parent"
 6    ohos:rebound_effect="true"
 7    ohos:layout_alignment="horizontal_center"> //表示是水平居中
 8    <DirectionalLayout
 9        ohos:width="match_parent"
10        ohos:height="match_content"
11        ohos:orientation="vertical">
12        <Text
13            ohos:width="match_content"
14            ohos:height="match_content"
15            ohos:text="Common layout"
16            ohos:text_color="#708090"
17            ohos:top_margin="15vp"
18            ohos:left_margin="10vp"
19            ohos:text_size="25fp"/>
20        <Text
21            ohos:background_element="#70dbdb"
22            ohos:width="match_parent"
23            ohos:height="3"/>
24        <TableLayout
25            ohos:width="1080"
26            ohos:height="match_content"
27            ohos:orientation="horizontal"
28            ohos:top_margin="10"
29            ohos:column_count="2">
30            <Button
31                ohos:id="$+id:directional_layout"
32                ohos:width="500"
33                ohos:height="120"
34                ohos:margin="5"
35                ohos:padding="2"
36                ohos:text="DirectionalLayout"
37                ohos:text_size="17fp"/>
38            <Button
39                ohos:id="$+id:dependent_layout"
40                ohos:width="500"
41                ohos:height="120"
42                ohos:margin="5"
43                ohos:padding="2"
44                ohos:text="DependentLayout"
45                ohos:text_size="17fp"/>
46            <Button
47                ohos:id="$+id:stack_layout"
48                ohos:width="500"
49                ohos:height="120"
50                ohos:margin="5"
51                ohos:padding="2"
52                ohos:text="StackLayout"
53                ohos:text_size="17fp"/>
54            <Button
55                ohos:id="$+id:table_layout"
56                ohos:width="500"
57                ohos:height="120"
58                ohos:margin="5"
59                ohos:padding="2"
60                ohos:text="TableLayout"
61                ohos:text_size="17fp"/>
62        </TableLayout>
63    </DirectionalLayout>
64</ScrollView>

接下來當(dāng)我們點(diǎn)擊到id 為Id_directional_layout 這個(gè)button時(shí),就會(huì)跳轉(zhuǎn)到present(new DirectionalLayoutSlice(),new Intent()); 這個(gè)類文件,其文件內(nèi)容為:

1public class DirectionalLayoutSlice extends AbilitySlice{
2    @Override
3    public void onStart(Intent intent) {
4        super.onStart(intent);
5        super.setUIContent(ResourceTable.Layout_directional_layout);
6    }
7   }

從代碼里面可以看得到,這里面是去渲染了一個(gè)directional_layout的頁面布局文件。來看下這個(gè)文件的內(nèi)容:

 1<?xml version="1.0" encoding="utf-8"?>
 2<DirectionalLayout
 3    xmlns:ohos="http://schemas.huawei.com/res/ohos"
 4    ohos:width="match_parent"
 5    ohos:height="match_parent"
 6    ohos:top_margin="13fp"
 7    ohos:orientation="vertical">
 8    <Text
 9        ohos:width="match_content"
10        ohos:height="match_content"
11        ohos:text="道理不光要懂,還要踐行"
12        ohos:text_alignment="center"
13        ohos:multiple_lines="true"
14        ohos:layout_alignment="center"
15        ohos:top_margin="20vp"
16        ohos:text_size="23vp"/>
17    <Text
18        ohos:width="match_parent"
19        ohos:height="match_content"
20        ohos:text="1.持續(xù)學(xué)習(xí)可以使你保持自信"
21        ohos:multiple_lines="true"
22        ohos:left_margin="20vp"
23        ohos:top_margin="20vp"
24        ohos:text_size="18vp"/>
25    <Text
26        ohos:width="match_parent"
27        ohos:height="match_content"
28        ohos:text="2.別人有背景而你只有背影,你需要努力"
29        ohos:multiple_lines="true"
30        ohos:left_margin="20vp"
31        ohos:top_margin="20vp"
32        ohos:text_size="18vp"/>
33    <Text
34        ohos:width="match_parent"
35        ohos:height="match_content"
36        ohos:text="3.你不努力沒有人替你堅(jiān)強(qiáng)"
37        ohos:multiple_lines="true"
38        ohos:left_margin="20vp"
39        ohos:top_margin="20vp"
40        ohos:text_size="18vp"/>
41    <Text
42        ohos:width="match_parent"
43        ohos:height="match_content"
44        ohos:text="4.當(dāng)今注意力是稀缺資源,你應(yīng)該將注意力放在有價(jià)值的事情上"
45        ohos:multiple_lines="true"
46        ohos:left_margin="20vp"
47        ohos:top_margin="20vp"
48        ohos:text_size="18vp"/>
49</DirectionalLayout>

其中的每一行就不再做詳細(xì)解釋了,總體的意思是有一個(gè)標(biāo)題頭,它居中展示,字體要大一些。然后就是四個(gè)帶有標(biāo)簽1,2,3,4的文本內(nèi)容。

 

第三步:運(yùn)行后的效果展示
下圖是進(jìn)入的主頁面:

HarmonyOS App開發(fā)之組件布局類

 

下圖是點(diǎn)擊“DirectionLayout”按鈕后的頁面:

HarmonyOS App開發(fā)之組件布局類

 

下圖是點(diǎn)擊“DependentLayout”按鈕后的頁面:

HarmonyOS App開發(fā)之組件布局類

 

下圖是點(diǎn)擊“StackLayout” 按鈕后的頁面:

HarmonyOS App開發(fā)之組件布局類

 

下圖是點(diǎn)擊“TableLayout”按鈕后的頁面:

HarmonyOS App開發(fā)之組件布局類

 

總結(jié):

  1. 由于篇幅有限,此處不再把每一個(gè)布局代碼詳細(xì)拿出來說明,通過上面的一個(gè)布局示例就能很清楚的了解其中的精髓。
  2. 本人因技術(shù)水平有限,如有錯(cuò)誤之處望指出。

分享到:
標(biāo)簽:HarmonyOS
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定