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

鴻蒙HarmonyOS應(yīng)用開發(fā):從零開始開發(fā)HarmonyOS應(yīng)用

開發(fā) OpenHarmony
《從零開始開發(fā)HarmonyOS應(yīng)用》是華為展示的第一個鴻蒙應(yīng)用示例,示例簡單的介紹了多設(shè)備自適應(yīng)布局、輸入事件處理、和跨設(shè)備流轉(zhuǎn)。

[[351129]]

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

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

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

2020年9月10日,HarmonyOS 2.0的發(fā)布對于IT界來說又是一件翹首以盼的大事。發(fā)布會上,華為消費者業(yè)務(wù)軟件部總裁王成錄為開發(fā)者帶來了一個全面升級的華為鴻蒙版本,各方面能力的大幅提升,完整的應(yīng)用開發(fā)生態(tài),超級終端的全場景生態(tài),即將開啟移動生態(tài)的下一下新紀元。

在參加完鴻蒙2.0的發(fā)布會后,又周轉(zhuǎn)于9月11日華為聯(lián)合南北向業(yè)務(wù)合作伙伴以及應(yīng)用生態(tài)合作伙伴共同主持的各技術(shù)分論壇活動。作為一名從事移動應(yīng)用相關(guān)產(chǎn)業(yè)近十余年的工作者,自然是對華為鴻蒙2.0提供的完整的應(yīng)用開發(fā)生態(tài)更為感興趣。

《從零開始開發(fā)HarmonyOS應(yīng)用》是華為展示的第一個鴻蒙應(yīng)用示例,示例簡單的介紹了多設(shè)備自適應(yīng)布局、輸入事件處理、和跨設(shè)備流轉(zhuǎn)。

1 創(chuàng)建應(yīng)用工程

使用 DevEco Studio 創(chuàng)建應(yīng)用工程,在菜單欄打開“File>New>New Project”,在彈出的對話框中選擇java工程模板。


選擇好模板之后點擊“Next”,在下一個界面中指定“Project Name”和“Package Name”,然后點擊“Finish”即可建立工程。

 一個建立好的工程包含以下目錄:


2 設(shè)計用戶界面

在Java UI框架中,提供了兩種編寫布局的方式:在XML中聲明UI布局和在代碼中創(chuàng)建布局。這兩種方式創(chuàng)建出的布局沒有本質(zhì)差別,此例主要通過XML的方式編寫應(yīng)用的頁面。

2.1 XML編寫頁面

2.1.1 新建XML頁面

在“Project”窗口,打開“entry > src > main > resources > base”,右鍵點擊“base”文件夾,選擇“New > Directory”,命名為“layout”。

右鍵點擊“layout”文件夾,選擇“New > File”命名為“main_layout.xml”。

在“layout”文件夾下可以看到新增了“main_layout.xml”文件。


2.1.2 編寫XML代碼

這個示例中自適應(yīng)布局的實現(xiàn),主要是基于AdaptiveBoxLayout新的布局樣式,它可以將布局在橫豎屏設(shè)備上進行自適應(yīng)分布排列。開發(fā)者可以將布局代碼寫在“main_layout.xml”文件,關(guān)于布局代碼怎樣實現(xiàn)可以參考https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-component-layout-xml-0000000000500395。

如果布局中引用到圖片資源,需要將圖片放到 “resources>base>media ”。



2.2加載XML布局

在“Project”窗口中,選擇“entry > src > main > java > com.huawei.example.helloworld > slice”,打開“MainAbilitySlice.java”文件。重寫onStart()方法加載XML布局,示例代碼如下:

  1. 1.package com.huawei.example.helloworld.slice; 
  2. 2.import com.huawei.example.helloworld.ResourceTable; 
  3. 3.import ohos.aafwk.ability.AbilitySlice; 
  4. 4.import ohos.aafwk.content.Intent; 
  5. 5.  
  6. 6.public class MainAbilitySlice extends AbilitySlice { 
  7. 7.  
  8. 8.    @Override 
  9. 9.    public void onStart(Intent intent) { 
  10. 10.        super.onStart(intent); 
  11. 11.        super.setUIContent(ResourceTable.Layout_main_layout); // 加載XML布局 
  12. 12.    } 
  13. 13.  
  14. 14.    @Override 
  15. 15.    public void onActive() { 
  16. 16.        super.onActive(); 
  17. 17.    } 
  18. 18.  
  19. 19.    @Override 
  20. 20.    public void onForeground(Intent intent) { 
  21. 21.        super.onForeground(intent); 
  22. 22.    } 
  23. 23.} 

應(yīng)用運行效果如圖所示:


3 輸入事件處理

輸入事件包括兩種,一種是觸控事件,一種是按鍵事件。

3.1 觸控事件

組件的一個重要作用是當用戶點擊組件時,會執(zhí)行相應(yīng)的操作或者界面出現(xiàn)相應(yīng)的變化。用戶點擊組件時,組件對象將收到一個點擊事件。開發(fā)者可以自定義響應(yīng)點擊事件的方法。例如,通過創(chuàng)建一個Component.ClickedListener對象,然后通過調(diào)用setClickedListener將其分配給組件。示例代碼如下:

  1. 1. //1.先導入ohos.agp.components.Image 
  2. 2. //2.從定義的xml中獲取Image對象 
  3. 3. Image remote = (Image) findComponentById(ResourceTable.Id_remote); 
  4. 4. //3.為Image設(shè)置點擊事件回調(diào) 
  5. 5. remote.setClickedListener(component -> { 
  6. 6.     //4.此處添加點擊按鈕后的事件處理邏輯 
  7. 7.      migrateAbility(); 
  8. 8. });​ 

 3.2 按鍵點擊事件

當設(shè)備按鍵按下時,相應(yīng)的Ability對象將收到一個KeyEvent事件。開發(fā)者可以自定義響應(yīng)點擊事件的方法。

一個示例代碼如下:

  1. 1.public boolean onKeyEvent(Component component, KeyEvent keyEvent) { 
  2. 2.    if (keyEvent.isKeyDown() 
  3. 3.            && keyEvent.getKeyCode() == KeyEvent.KEY_DPAD_CENTER 
  4. 4.            && component.getId() == ResourceTable.Id_remote) { 
  5. 5.        continueAbility(); 
  6. 6.        return true
  7. 7.    } 
  8. 8.    return false
  9. 9.} 

 4 跨設(shè)備流轉(zhuǎn)

4.1 申請權(quán)限

權(quán)限即系統(tǒng)用于控制第三方應(yīng)用或服務(wù)訪問用戶敏感個人數(shù)據(jù)或操作敏感能力的授權(quán)方式,當?shù)谌綉?yīng)用或服務(wù)嘗試訪問用戶個人數(shù)據(jù)或操作敏感能力時,系統(tǒng)通過彈窗的形式請求用戶授權(quán)。用戶可授權(quán)此應(yīng)用使用相關(guān)權(quán)限,后續(xù)也可取消此授權(quán)。例如打車類應(yīng)用為了定位,在獲取用戶的地理位置信息前需向用戶申請,用戶同意此應(yīng)用使用,后續(xù)也可取消此授權(quán)。

當使用“流轉(zhuǎn)”功能需要申請遷移權(quán)限D(zhuǎn)ISTRIBUTED_DATASYNC。

4.1.1 在config.json中聲明權(quán)限

  1. 1. "reqPermissions": [ 
  2. 2.  { 
  3. 3.   "name""ohos.permission.DISTRIBUTED_DATASYNC" 
  4. 4.  } 
  5. 5. ] 

 4.1.2 在MainAbilitySlice.java中請求權(quán)限 

  1. 1.private void migrateAbility() { 
  2. 2.    if (verifySelfPermission(SystemPermission.DISTRIBUTED_DATASYNC) 
  3. 3.            == IBundleManager.PERMISSION_GRANTED) { 
  4. 4.        this.continueAbility(); 
  5. 5.    } else { 
  6. 6.        requestPermission(SystemPermission.DISTRIBUTED_DATASYNC); 
  7. 7.    } 
  8. 8.} 

 4.2 跨設(shè)備流轉(zhuǎn)

僅continueAbility一行代碼即可完成應(yīng)用在設(shè)備之間流轉(zhuǎn),依托的還是鴻蒙OS的分布式軟總線、分布式數(shù)據(jù)庫的能力。在此基礎(chǔ)上將這些能力通過接口的形式提供開發(fā)者。

事實上流轉(zhuǎn)并非“一行代碼可以完成”,如果開發(fā)者想在流轉(zhuǎn)過程中做更多的事情,那么可以通過IAbilifyContinuation接口中的方法進行實現(xiàn)。

IAbilityContinuation接口方法說明如下:

接口名稱說明

Ability以及AbilitySlice都需要實現(xiàn)IAbilityContinuation接口,并實現(xiàn)其中的方法。示例代碼如下 :

  1. 1. @Override 
  2. 2. public boolean onStartContinuation() { 
  3. 3.     return true
  4. 4. } 
  5. 5.  
  6. 6. @Override 
  7. 7. public boolean onSaveData(IntentParams intentParams) { 
  8. 8.     return true
  9. 9. } 
  10. 10.  
  11. 11. @Override 
  12. 12. public boolean onRestoreData(IntentParams intentParams) { 
  13. 13.     return true
  14. 14. } 
  15. 15.  
  16. 16. @Override 
  17. 17. public void onCompleteContinuation(int i) { 
  18. 18.  
  19. 19. }​ 

 通過示例講解及代碼開發(fā)過程解讀,新的布局管理,新的資源文件結(jié)構(gòu),預(yù)示更為簡潔且功能更為強大的應(yīng)用開發(fā)生態(tài)已經(jīng)誕生。相信豐富的系統(tǒng)API將帶給我們開發(fā)者更多的便利及更強大的能力。

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

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

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

 

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

2020-09-28 15:13:04

鴻蒙

2011-04-29 10:46:32

iPhone開發(fā)入門iPhoneiOS

2025-02-17 07:20:00

Flutter 3Flutter開發(fā)

2021-02-07 12:08:39

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

2021-06-24 09:32:00

鴻蒙HarmonyOS應(yīng)用

2024-03-26 15:19:36

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

2013-09-11 09:37:17

企業(yè)級移動應(yīng)用

2011-04-06 15:55:50

開發(fā)webOS程序webOS

2022-08-09 16:01:24

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

2011-09-05 14:17:54

Sencha ToucMVC

2024-07-31 08:14:17

2021-01-11 11:04:49

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

2024-04-09 09:24:13

2019-08-12 09:36:49

2020-10-20 09:30:00

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

2022-02-28 15:44:05

鴻蒙系統(tǒng)鴻蒙API加載網(wǎng)絡(luò)圖片

2019-05-14 10:43:17

圖標UI設(shè)計界面

2022-08-25 21:46:51

網(wǎng)絡(luò)通訊應(yīng)用開發(fā)

2021-01-18 13:17:04

鴻蒙HarmonyOSAPP
點贊
收藏

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