成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙HarmonyOS應用開發:從零開始開發HarmonyOS應用

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

[[351129]]

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

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

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

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

在參加完鴻蒙2.0的發布會后,又周轉于9月11日華為聯合南北向業務合作伙伴以及應用生態合作伙伴共同主持的各技術分論壇活動。作為一名從事移動應用相關產業近十余年的工作者,自然是對華為鴻蒙2.0提供的完整的應用開發生態更為感興趣。

《從零開始開發HarmonyOS應用》是華為展示的第一個鴻蒙應用示例,示例簡單的介紹了多設備自適應布局、輸入事件處理、和跨設備流轉。

1 創建應用工程

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


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

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


2 設計用戶界面

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

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代碼

這個示例中自適應布局的實現,主要是基于AdaptiveBoxLayout新的布局樣式,它可以將布局在橫豎屏設備上進行自適應分布排列。開發者可以將布局代碼寫在“main_layout.xml”文件,關于布局代碼怎樣實現可以參考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.} 

應用運行效果如圖所示:


3 輸入事件處理

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

3.1 觸控事件

組件的一個重要作用是當用戶點擊組件時,會執行相應的操作或者界面出現相應的變化。用戶點擊組件時,組件對象將收到一個點擊事件。開發者可以自定義響應點擊事件的方法。例如,通過創建一個Component.ClickedListener對象,然后通過調用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設置點擊事件回調 
  5. 5. remote.setClickedListener(component -> { 
  6. 6.     //4.此處添加點擊按鈕后的事件處理邏輯 
  7. 7.      migrateAbility(); 
  8. 8. });​ 

 3.2 按鍵點擊事件

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

一個示例代碼如下:

  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 跨設備流轉

4.1 申請權限

權限即系統用于控制第三方應用或服務訪問用戶敏感個人數據或操作敏感能力的授權方式,當第三方應用或服務嘗試訪問用戶個人數據或操作敏感能力時,系統通過彈窗的形式請求用戶授權。用戶可授權此應用使用相關權限,后續也可取消此授權。例如打車類應用為了定位,在獲取用戶的地理位置信息前需向用戶申請,用戶同意此應用使用,后續也可取消此授權。

當使用“流轉”功能需要申請遷移權限DISTRIBUTED_DATASYNC。

4.1.1 在config.json中聲明權限

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

 4.1.2 在MainAbilitySlice.java中請求權限 

  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 跨設備流轉

僅continueAbility一行代碼即可完成應用在設備之間流轉,依托的還是鴻蒙OS的分布式軟總線、分布式數據庫的能力。在此基礎上將這些能力通過接口的形式提供開發者。

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

IAbilityContinuation接口方法說明如下:

接口名稱說明

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

  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. }​ 

 通過示例講解及代碼開發過程解讀,新的布局管理,新的資源文件結構,預示更為簡潔且功能更為強大的應用開發生態已經誕生。相信豐富的系統API將帶給我們開發者更多的便利及更強大的能力。

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

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

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

 

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

2020-09-28 15:13:04

鴻蒙

2011-04-29 10:46:32

iPhone開發入門iPhoneiOS

2021-06-24 09:32:00

鴻蒙HarmonyOS應用

2024-03-26 15:19:36

鴻蒙應用開發開發工具

2025-02-17 07:20:00

Flutter 3Flutter開發

2021-02-07 12:08:39

鴻蒙HarmonyOS應用開發

2020-10-20 09:30:00

HarmonyOS應用開發

2022-02-28 15:44:05

鴻蒙系統鴻蒙API加載網絡圖片

2013-09-11 09:37:17

企業級移動應用

2011-04-06 15:55:50

開發webOS程序webOS

2011-09-05 14:17:54

Sencha ToucMVC

2024-07-31 08:14:17

2022-08-25 21:46:51

網絡通訊應用開發

2022-08-09 16:01:24

應用開發鴻蒙

2021-01-18 13:17:04

鴻蒙HarmonyOSAPP

2021-01-11 11:04:49

鴻蒙HarmonyOS應用開發

2024-04-09 09:24:13

2019-08-12 09:36:49

2019-05-14 10:43:17

圖標UI設計界面
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线视频免费观看 | 超碰美女在线 | 国产欧美综合在线 | 久久三区| 超碰精品在线 | 91精品91久久久 | 国产精品免费在线 | 一级做a爰片性色毛片16美国 | 亚洲一区二区视频在线播放 | 国产人成精品一区二区三 | 午夜www| 亚洲一区视频在线 | 国产高清视频在线 | 国产在线精品一区二区 | 91精品国产色综合久久 | 尤物视频在线免费观看 | 久久久女女女女999久久 | 亚洲永久字幕 | 欧美日韩国产精品激情在线播放 | 日韩在线一区视频 | 91大片| 成人黄色在线 | 国产高清一区二区三区 | 日韩视频―中文字幕 | 国产午夜精品一区二区三区在线观看 | 伊人伊成久久人综合网站 | 欧美大片一区 | 国产成人99久久亚洲综合精品 | 欧美一区二区在线免费观看 | 天堂在线中文 | 波多野结衣一二三区 | 亚洲午夜精品一区二区三区他趣 | 亚洲综合国产 | 国产一级在线视频 | 91精品国产乱码久久久久久久久 | 久久精品国产久精国产 | 日韩欧美三区 | 99国内精品久久久久久久 | 亚洲一区二区三区免费 | 国产精品毛片在线 | 免费在线观看黄视频 |