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

輕松玩轉平行視界(上)

系統
平行視界是多窗口交互服務的其中一種,平行視界是以界面為基本單位實現應用內雙窗口顯示的系統側解決方案。

[[434407]]

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

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

https://harmonyos.51cto.com

前言

10.23去參加了HDC2021 Codelabs趣味闖關賽,闖關賽的題目需要實現的功能大致分為以下三步:

  1. 點擊電影卡片跳轉到電影列表頁面(服務卡片開發)
  2. 點擊電影列表中的具體電影,跳轉到具體電影的信息,該窗口實現平行視界(平行視界服務開發)
  3. 點擊具體電影的信息,流轉到另一設備中(分布式流轉開發)
[[434408]]

這一次就給大家分享關于平行視界服務開發的心得體會(~ ̄▽ ̄)~

概述

平行視界是多窗口交互服務的其中一種,平行視界是以界面為基本單位實現應用內雙窗口顯示的系統側解決方案。

應用可以根據自身業務設計雙窗口顯示界面組合,以實現符合應用邏輯的最佳單應用多窗口用戶體驗。適用于辦公、郵箱、IM、電商等效率類或需要頻繁來回切換的應用。HarmonyOS對于折疊屏展開態、平板橫屏設備支持平行視界。用戶應用程序可以根據自身業務特點,設計最佳的雙窗口組合體驗,如社交類應用的“列表+聊天”,購物類應用的“雙窗口比價”等。

平行視界的開發分為兩步:

  1. 在config.json中聲明支持平行視界。
  2. 在src -> main -> resources -> rawfile目錄下增加easygo.json配置文件,實現平行視界顯示策略配置。

正文

1. 安裝和配置DevEco Studio 3.0 Beta

DevEco Studio 3.0 Beta下載

DevEco Studio 3.0 Beta安裝

2. 創建一個Empty Ability應用

DevEco Studio下載安裝成功后,打開DevEco Studio,點擊左上角的File,點擊New,再選擇New Project,選擇Empty Ability選項,點擊Next按鈕。

將文件命名為Mydemo1(文件名不能出現中文或者特殊字符,否則將無法成功創建項目文件),Project Type勾選Application,選擇保存路徑,Language勾選Java,選擇API 6,設備勾選Tablet,最后點擊Finish按鈕。

選擇Empty Ability配置文件信息

【木棉花】輕松玩轉平行視界(上)-鴻蒙HarmonyOS技術社區
【木棉花】輕松玩轉平行視界(上)-鴻蒙HarmonyOS技術社區

3. 編寫簡單邏輯代碼

代碼文件結構如下:

【木棉花】輕松玩轉平行視界(上)-鴻蒙HarmonyOS技術社區

在com.test.mydemo1目錄下創建RightAbility文件后,代碼有作修改的如下:

ability_main.xml:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_parent" 
  5.     ohos:width="match_parent" 
  6.     ohos:alignment="center" 
  7.     ohos:orientation="vertical"
  8.  
  9.     <Text 
  10.         ohos:id="$+id:text_helloworld" 
  11.         ohos:height="match_content" 
  12.         ohos:width="match_content" 
  13.         ohos:background_element="$graphic:background_ability_main" 
  14.         ohos:layout_alignment="horizontal_center" 
  15.         ohos:text="這是MainAbilitySlice頁面" 
  16.         ohos:text_size="40vp" 
  17.         /> 
  18.  
  19.     <Button 
  20.         ohos:id="$+id:btn" 
  21.         ohos:height="match_content" 
  22.         ohos:width="match_content" 
  23.         ohos:background_element="#888888" 
  24.         ohos:layout_alignment="horizontal_center" 
  25.         ohos:text="跳轉到RightAbilitySlice頁面" 
  26.         ohos:text_size="40vp" 
  27.         /> 
  28.  
  29. </DirectionalLayout> 

ability_right:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_parent" 
  5.     ohos:width="match_parent" 
  6.     ohos:alignment="center" 
  7.     ohos:orientation="vertical" 
  8.     ohos:background_element="#DDDDDD"
  9.  
  10.     <Text 
  11.         ohos:id="$+id:text_helloworld" 
  12.         ohos:height="match_content" 
  13.         ohos:width="match_content" 
  14.         ohos:layout_alignment="horizontal_center" 
  15.         ohos:text="這是RightAbilitySlice頁面" 
  16.         ohos:text_size="40vp" 
  17.         /> 
  18.  
  19.     <Button 
  20.         ohos:id="$+id:btn" 
  21.         ohos:height="match_content" 
  22.         ohos:width="match_content" 
  23.         ohos:background_element="#888888" 
  24.         ohos:layout_alignment="horizontal_center" 
  25.         ohos:text="返回到MainAbilitySlice頁面" 
  26.         ohos:text_size="40vp" 
  27.         /> 
  28.  
  29. </DirectionalLayout> 

MainAbilitySlice.java:

  1. public class MainAbilitySlice extends AbilitySlice { 
  2.     @Override 
  3.     public void onStart(Intent intent) { 
  4.         super.onStart(intent); 
  5.         super.setUIContent(ResourceTable.Layout_ability_main); 
  6.  
  7.         findComponentById(ResourceTable.Id_btn).setClickedListener(new Component.ClickedListener() { 
  8.             @Override 
  9.             public void onClick(Component component) { 
  10.                 Operation operation = new Intent.OperationBuilder() 
  11.                         .withDeviceId(""
  12.                         .withBundleName(getBundleName()) 
  13.                         .withAbilityName(RightAbility.class.getName()) 
  14.                         .build(); 
  15.                 intent.setOperation(operation); 
  16.                 startAbility(intent); 
  17.             } 
  18.         }); 
  19.     } 
  20.  
  21.     @Override 
  22.     public void onActive() { 
  23.         super.onActive(); 
  24.     } 
  25.  
  26.     @Override 
  27.     public void onForeground(Intent intent) { 
  28.         super.onForeground(intent); 
  29.     } 

RightAbilitySlice.java:

  1. public class RightAbilitySlice extends AbilitySlice { 
  2.     @Override 
  3.     public void onStart(Intent intent) { 
  4.         super.onStart(intent); 
  5.         super.setUIContent(ResourceTable.Layout_ability_right); 
  6.  
  7.         findComponentById(ResourceTable.Id_btn).setClickedListener(new Component.ClickedListener() { 
  8.             @Override 
  9.             public void onClick(Component component) { 
  10.                 terminateAbility(); 
  11.             } 
  12.         }); 
  13.     } 
  14.  
  15.     @Override 
  16.     public void onActive() { 
  17.         super.onActive(); 
  18.     } 
  19.  
  20.     @Override 
  21.     public void onForeground(Intent intent) { 
  22.         super.onForeground(intent); 
  23.     } 

4. 在config.json中聲明支持平行視界

config.json配置文件的module對象中新增metaData:

  1. "metaData": { 
  2.       "customizeData": [ 
  3.         { 
  4.         "name""EasyGoClient"
  5.         "value""true" 
  6.         } 
  7.       ] 
  8.     } 

 5. 創建平行視界配置文件easygo.json

在src -> main -> resources -> rawfile目錄下增加easygo.json配置文件:

  1.   "easyGoVersion""1.0"
  2.   "client""com.test.mydemo1"
  3.   "logicEntities": [ 
  4.     { 
  5.       "head": { 
  6.         "function""magicwindow"
  7.         "required""true" 
  8.       }, 
  9.       "body": { 
  10.         "mode""1"
  11.         "abilityPairs": [ 
  12.           { 
  13.             "from""com.test.mydemo1.MainAbility"
  14.             "to""com.test.mydemo1.RightAbility" 
  15.           } 
  16.         ], 
  17.         "Abilities": [ 
  18.           { 
  19.             "name""com.test.mydemo1.MainAbility"
  20.             "defaultFullScreen""false" 
  21.           }, 
  22.           { 
  23.             "name""com.test.mydemo1.RightAbility"
  24.             "defaultFullScreen""false" 
  25.           } 
  26.         ], 
  27.         "UX": { 
  28.           "isDraggable""true" 
  29.         } 
  30.       } 
  31.     } 
  32.   ] 

上述代碼easygo.json配置文件的相關元素的描述如下:

  1.   "easyGoVersion": 必選,固定值為"1.0"
  2.   "client": 必選,該程序的應用包名, 
  3.   "logicEntities": [ 
  4.     { 
  5.       "head": { 
  6.         "function": 必選,調用組件名,固定值為"magicwindow"
  7.         "required": 必選,預留字段,固定值為"true" 
  8.       }, 
  9.       "body": { 
  10.         "mode": 必選,基礎分屏模式."0":購物模式,abilityPairs節點不生效;"1":自定義模式(包含導航模式), 
  11.         "abilityPairs": [自定義模式下必選,配置從from頁面到to頁面的分屏顯示 
  12.           { 
  13.             "from": 自定義模式下必選,AbilityA的包名, 
  14.             "to": 自定義模式下必選,AbilityB的包名, 
  15.           }表示A上啟動B,觸發分屏(A左B右) 
  16.         ], 
  17.         "Abilities": [可選,應用Page Ability屬性列表, 
  18.           { 
  19.             "name": 可選,Page Ability包名, 
  20.             "defaultFullScreen": 可選,Page Ability是否支持默認以全屏啟動."true": 支持;,"false": 不支持 
  21.           }, 
  22.           { 
  23.             "name": 可選,Page Ability包名, 
  24.             "defaultFullScreen": 可選,Page Ability是否支持默認以全屏啟動."true": 支持;,"false": 不支持 
  25.           } 
  26.         ], 
  27.         "UX": {可選,頁面UX控制配置 
  28.           "isDraggable": 可選,是否支持分屏窗口拖動(僅針對平板產品生效)."true": 支持;,"false": 不支持(缺省值為false
  29.         } 
  30.       } 
  31.     } 
  32.   ] 

平板橫屏的運行效果如下:

【木棉花】輕松玩轉平行視界(上)-鴻蒙HarmonyOS技術社區

6. 添加復雜邏輯代碼

具體代碼見附錄文件,代碼文件結構如下:

【木棉花】輕松玩轉平行視界(上)-鴻蒙HarmonyOS技術社區

7. 完善easygo.json配置文件

  1.   "easyGoVersion""1.0"
  2.   "client""com.test.mydemo1"
  3.   "logicEntities": [ 
  4.     { 
  5.       "head": { 
  6.         "function""magicwindow"
  7.         "required""true" 
  8.       }, 
  9.       "body": { 
  10.         "mode""1"
  11.         "abilityPairs": [ 
  12.           { 
  13.             "from""com.test.mydemo1.MainAbility"
  14.             "to""com.test.mydemo1.RightAbility" 
  15.           }, 
  16.           { 
  17.             "from""com.test.mydemo1.RightAbility"
  18.             "to""com.test.mydemo1.RightAbility2" 
  19.           } 
  20.         ], 
  21.         "Abilities": [ 
  22.           { 
  23.             "name""com.test.mydemo1.MainAbility"
  24.             "defaultFullScreen""false" 
  25.           }, 
  26.           { 
  27.             "name""com.test.mydemo1.RightAbility"
  28.             "defaultFullScreen""false" 
  29.           }, 
  30.           { 
  31.             "name""com.test.mydemo1.RightAbility2"
  32.             "defaultFullScreen""false" 
  33.           }, 
  34.           { 
  35.             "name""com.test.mydemo1.RightAbility3"
  36.             "defaultFullScreen""false" 
  37.           } 
  38.         ], 
  39.         "UX": { 
  40.           "isDraggable""true" 
  41.         } 
  42.       } 
  43.     } 
  44.   ] 

平板橫屏的運行效果如下:

圖1圖2圖3

【木棉花】輕松玩轉平行視界(上)-鴻蒙HarmonyOS技術社區
【木棉花】輕松玩轉平行視界(上)-鴻蒙HarmonyOS技術社區
【木棉花】輕松玩轉平行視界(上)-鴻蒙HarmonyOS技術社區

總結

從上述easygo.json文件可以看出,配置文件只設置了MainAbility|RightAbility和RightAbility|RightAbility2(A|B表示A左B右分屏),但是從運行效果可以發現以下四點內容:

  1. 若配置了A|B,則在A上啟動B,觸發雙窗口顯示(A左B右),但在B上啟動A不會觸發平行視界雙窗口,如正文的第五點的運行效果。
  2. 若配置了A|B、B|C,沒有配置A|D,則A左B右分屏時,B觸發C,B左移,C右側顯示,即B左C右分屏;但無論從左或右觸發D,都右側顯示D,即A左D右分屏,如圖1所示。
  3. 沒有配置B|D,則D窗口跟隨B此時的顯示方式。如果B此時是全屏,則全屏顯示D;如果B此時是雙窗口,則D在雙窗口右邊顯示,即B左D右分屏,如圖2所示。
  4. 返回頁面切換和跳轉顯示頁面基本為相反的過程,如圖3所示。

這一次的分享就到這里結束啦O(∩_∩)O~,平行視界服務開發還有購物模式、導航模式、后臺鎖定等內容,就留到下一次啦,我會在以后的文章中陸陸續續分享我的實戰操作,希望能與各位一起學習相互交流♪(∇*)

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

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

https://harmonyos.51cto.com

 

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

2021-11-10 16:08:45

鴻蒙HarmonyOS應用

2021-11-08 10:20:48

鴻蒙HarmonyOS應用

2020-09-24 10:57:12

編程函數式前端

2023-08-18 14:39:02

2010-07-09 12:09:34

IT運維Mocha BSM摩卡軟件

2021-11-15 10:15:37

鴻蒙HarmonyOS應用

2010-09-01 10:09:32

CSS樣式

2018-03-15 14:07:17

潤乾Excel行列轉換

2013-11-01 10:41:52

Windows 8.1應用技巧

2015-08-12 10:54:22

架構云

2014-08-19 09:10:45

IT運維

2010-09-06 12:46:05

無線網絡

2011-05-04 14:00:02

打印機Word打印

2019-03-15 11:07:35

華為云

2010-05-07 10:47:18

微軟Live照片庫

2021-10-28 14:58:15

鴻蒙HarmonyOS應用

2011-05-04 09:56:54

打印機Word打印

2010-01-15 10:14:21

C++ Builder

2025-06-03 01:25:00

2010-07-21 14:56:21

Windows Pho
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂久久天堂综合色 | 亚洲欧美中文字幕 | 国产一区二区三区在线免费观看 | 午夜视频在线免费观看 | 午夜专区 | 婷婷综合| 狠狠躁18三区二区一区 | a级免费黄色片 | 欧美在线视频网站 | 国产日韩欧美一区二区 | 日本不卡一区二区三区在线观看 | 国产精品美女久久久 | 区一区二在线观看 | 欧美三级电影在线播放 | 午夜免费在线 | 亚洲黄色高清视频 | 91在线一区 | 少妇精品久久久久久久久久 | 99精品国产一区二区三区 | h视频在线免费 | 亚洲精品免费视频 | www.久久久久久久久久久 | 成人午夜网站 | 激情欧美一区二区三区 | 一级黄色毛片子 | 久久久亚洲综合 | 欧美性一区二区三区 | 天天射夜夜操 | 国产日韩欧美在线 | 欧美a级成人淫片免费看 | 一级片免费视频 | 自拍视频网站 | 国产精品日韩一区二区 | 久久亚洲精品久久国产一区二区 | 日本a网站 | 男女羞羞在线观看 | 国产在线一区观看 | 日韩一区二区三区在线 | tube国产 | 国产成人久久精品一区二区三区 | 欧美精品在线免费 |