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

鴻蒙OS應(yīng)用開發(fā)實踐(三)

系統(tǒng)
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com/#zz

想了解更多內(nèi)容,請訪問:

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

https://harmonyos.51cto.com/#zz

經(jīng)過前兩篇的學(xué)習(xí),我們了解了DevEco運行一個程序的基本流程和一個鴻蒙OS應(yīng)用項目的代碼結(jié)構(gòu)。

用一句《三體》格式的話說:跑得動hello world,我們就是同志了。

這一篇,我們就自己手動擼一個簡單的鴻蒙交互程序:從一個頁面跳轉(zhuǎn)到另一個頁面。

(一)創(chuàng)建工程

先創(chuàng)建一個新的TV的empty java工程:


點finish后,發(fā)現(xiàn)這次從創(chuàng)建到項目環(huán)境加載完成,用了很短的時間,這是因為初始環(huán)境需要各種配置和下載,類似我們初下完一個大型游戲,首次需要更新內(nèi)容一般。


(二)自定義布局

進入界面后,默認(rèn)的IDE已經(jīng)創(chuàng)建了一個hello world程序,我們打開entry -> src -> main ->resources -> base -> layout -> ability_main.xml 布局文件:

我們先清掉原本的布局,重新寫入我們自己的布局:

  1. xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  2.  
  3. ohos:width="match_parent" 
  4.  
  5. ohos:height="match_parent" 
  6.  
  7. ohos:background_element="#000000"
  8.  
  9.  
  10. ohos:id="$+id:text" 
  11.  
  12. ohos:width="match_content" 
  13.  
  14. ohos:height="match_content" 
  15.  
  16. ohos:center_in_parent="true" 
  17.  
  18. ohos:text="你好,鴻蒙OS" 
  19.  
  20. ohos:text_color="white" 
  21.  
  22. ohos:text_size="32fp"/> 
  23.  
  24. ohos:width="match_content" 
  25.  
  26. ohos:height="match_content" 
  27.  
  28. ohos:text_size="20fp" 
  29.  
  30. ohos:text="跳轉(zhuǎn)" 
  31.  
  32. ohos:left_margin="50vp" 
  33.  
  34. ohos:bottom_margin="50vp" 
  35.  
  36. ohos:right_padding="80vp" 
  37.  
  38. ohos:left_padding="80vp" 
  39.  
  40. ohos:text_color="white" 
  41.  
  42. ohos:background_element="$graphic:button_element" 
  43.  
  44. ohos:center_in_parent="true" 
  45.  
  46. ohos:align_parent_bottom="true"/> 

 <DependentLayout>標(biāo)簽指定了這是一個相對位置布局,意思就是布局里的每個組件可以指定相對于其他同級組件的位置,也可以指定相對于父組件的位置。

<Button>標(biāo)簽表示了這里將會布局創(chuàng)建一個按鈕,大部分設(shè)置信息同Text。 

按鈕的背景指定了“button_element”來顯示,這是另外一個布局文件,我們來手動創(chuàng)建,在resources -> base ->graphic 目錄下,右鍵創(chuàng)建一個File,命名為:button_element.xml


button_element.xml添加如下代碼:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. <shape 
  4.  
  5.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  6.  
  7.     ohos:shape="rectangle"
  8.  
  9.     <corners 
  10.  
  11.         ohos:radius="10"/> 
  12.  
  13.     <solid 
  14.  
  15.         ohos:color="#FF007DFF"/> 
  16.  
  17. </shape> 

目前鴻蒙官方提供形狀:rectangle(方形)和oval(橢圓),通過不同的內(nèi)外邊距設(shè)定,就可以衍生出其他形狀:圓形,橢圓,正方,膠囊。

標(biāo)簽表示了圓角設(shè)定,將方形設(shè)定圓角,我們就可以得到一個圓角按鈕。

默認(rèn)的模版使用的是方向布局DirectionLayout(垂直或者橫向),這里我們修改使用DependentLayout相對位置布局,這樣可以更加方便的控制文本和按鈕的相對位置。

運行效果:


(三)創(chuàng)建建跳轉(zhuǎn)頁面

當(dāng)然,當(dāng)前點擊跳轉(zhuǎn)按鈕不會有任何反應(yīng),一方面我們還沒寫交互邏輯,另一方面,我們要跳轉(zhuǎn)的頁面也還沒寫。我們繼續(xù)下一步,寫一個新的頁面。

在項目對應(yīng)的目錄下,創(chuàng)建一個空的FA(java),如下圖:

 

這里我們將新頁面命名為:NewPage 


下面兩項不勾選,直接點finish。

創(chuàng)建后,目錄下除了剛才創(chuàng)建的newpage,還會自動創(chuàng)建一個newpageslice在slice目錄下以及對應(yīng)的布局文件在layout目錄下:

 之前在跑hello world的時候,我們說過,ability是入口,邏輯代碼都在slice里,同樣,在這個newpage里,它也是將邏輯route到了slice類中。

我們打開ability_new_page.xml,簡單修改下輸出文本:


(四)主頁面添加交互邏輯

到這里,我們的第二個頁面算是簡單的創(chuàng)建完畢了,下一步,我們需要在主頁面下添加交互邏輯,讓它可以跳轉(zhuǎn)到這個新的slice頁面中來,在主頁面(MainAbilitySlice)中去添加按鈕點擊的事件邏輯:

  1. Button btn = (Button) findComponentById(ResourceTable.Id_button); 
  2.  
  3. if (btn != null) { 
  4.  
  5. //添加按鈕點擊事件監(jiān)聽 
  6.  
  7. btn.setClickedListener(new Component.ClickedListener() { 
  8.  
  9. @Override 
  10.  
  11. public void onClick(Component component) { 
  12.  
  13. Intent newpageIntent = new Intent(); 
  14.  
  15. //指定目標(biāo)頁面 
  16.  
  17. Operation operation = new Intent.OperationBuilder() 
  18.  
  19. .withDeviceId("") .withBundleName("com.qibiao.harmonyosdemo") .withAbilityName("com.qibiao.harmonyosdemo.NewPage") .build(); 
  20.  
  21. newpageIntent.setOperation(operation); 
  22.  
  23. //啟動目標(biāo)頁面 
  24.  
  25. startAbility(newpageIntent); 
  26.  
  27. } }); 
  28.  

 這里會要求import新的包,以提供組件模塊,不然上面的代碼輸完是會標(biāo)紅報錯的。需要引入的包:

import ohos.aafwk.content.Operation;

import ohos.agp.components.Button;

import ohos.agp.components.Component;

解析下代碼:

findComponentById通過id來找到按鈕組件,然后這個id對應(yīng)的就是我們在布局文件中設(shè)置的:

ohos:id="$+id:button"

onClick對應(yīng)按鈕的點擊事件,這個不是自定義函數(shù),屬于事件觸發(fā)函數(shù)。

Intent上回說過了,它是一個中間件,協(xié)助當(dāng)前頁面往新頁面通訊。

Operation operation = new Intent.OperationBuilder()

.withDeviceId("") .withBundleName("com.qibiao.harmonyosdemo") .withAbilityName("com.qibiao.harmonyosdemo.NewPage") .build();

這串代碼指定了我們要跳轉(zhuǎn)的目標(biāo)頁面,需要指定目標(biāo)的包名,還有Ability名稱(非slice)。

最后使用startAbility()接口啟動那個頁面。

(五)運行

再次運行查看效果(先開遠(yuǎn)程虛擬設(shè)備,再點運行):

效果出來了,點擊右側(cè)的返回,還能回到主界面。

想了解更多內(nèi)容,請訪問:

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

https://harmonyos.51cto.com/#zz

 

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

2020-12-18 10:42:14

鴻蒙開發(fā)應(yīng)用

2020-12-03 10:05:07

鴻蒙OS

2020-12-04 09:52:22

鴻蒙OS

2022-07-15 12:58:02

鴻蒙攜程華為

2022-08-04 10:12:49

桌面技術(shù)

2021-01-15 11:36:16

鴻蒙HarmonyOSAI應(yīng)用

2010-03-02 11:12:33

Android應(yīng)用開發(fā)

2012-12-13 09:47:50

2019-06-25 15:56:58

鴻蒙華為操作系統(tǒng)

2012-09-17 11:19:49

IBMdw

2023-02-23 15:56:51

2022-11-30 10:34:17

2013-12-17 14:07:37

2013-01-11 15:06:13

iOS開發(fā)移動應(yīng)用iPhone

2010-04-20 09:14:33

Struts

2021-09-18 10:23:43

Serverless

2014-11-19 10:08:47

2011-08-24 09:29:00

Silverlight

2024-08-28 17:55:43

HarmonyOS

2022-01-06 09:55:19

鴻蒙HarmonyOS應(yīng)用
點贊
收藏

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