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

輕松玩轉(zhuǎn)平行視界(下)

系統(tǒng)
平行視界是多窗口交互服務(wù)的其中一種,平行視界是以界面為基本單位實(shí)現(xiàn)應(yīng)用內(nèi)雙窗口顯示的系統(tǒng)側(cè)解決方案。

[[434410]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

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

https://harmonyos.51cto.com

前言

先來回顧一下上一篇文章的easygo.json配置文件的相關(guān)元素的描述:【木棉花】輕松玩轉(zhuǎn)平行視界(上)

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

導(dǎo)航模式

代碼文件

代碼文件結(jié)構(gòu)如下:

【木棉花】輕松玩轉(zhuǎn)平行視界(下)-鴻蒙HarmonyOS技術(shù)社區(qū)

下面只給出部分重點(diǎn)代碼

FirstAbilitySlice.java:

  1. public class FirstAbilitySlice extends AbilitySlice { 
  2.     @Override 
  3.     public void onStart(Intent intent) { 
  4.         super.onStart(intent); 
  5.         super.setUIContent(ResourceTable.Layout_ability_first); 
  6.  
  7.         findComponentById(ResourceTable.Id_btn_yes).setClickedListener(new Component.ClickedListener() { 
  8.             @Override 
  9.             public void onClick(Component component) { 
  10.                 getContext().setDisplayOrientation(AbilityInfo.DisplayOrientation.LANDSCAPE);//申請(qǐng)橫屏方向可進(jìn)入全屏顯示狀態(tài) 
  11.             } 
  12.         }); 
  13.  
  14.         findComponentById(ResourceTable.Id_btn_no).setClickedListener(new Component.ClickedListener() { 
  15.             @Override 
  16.             public void onClick(Component component) { 
  17.                 getContext().setDisplayOrientation(AbilityInfo.DisplayOrientation. PORTRAIT);//調(diào)用申請(qǐng)豎屏方向即可退出全屏狀態(tài) 
  18.             } 
  19.         }); 
  20.  
  21.         findComponentById(ResourceTable.Id_btn2).setClickedListener(new Component.ClickedListener() { 
  22.             @Override 
  23.             public void onClick(Component component) { 
  24.                 Operation operation = new Intent.OperationBuilder() 
  25.                         .withDeviceId(""
  26.                         .withBundleName(getBundleName()) 
  27.                         .withAbilityName(SecondAbility.class.getName()) 
  28.                         .build(); 
  29.                 intent.setOperation(operation); 
  30.                 startAbility(intent); 
  31.             } 
  32.         }); 
  33.  
  34.         findComponentById(ResourceTable.Id_btn3).setClickedListener(new Component.ClickedListener() { 
  35.             @Override 
  36.             public void onClick(Component component) { 
  37.                 Operation operation = new Intent.OperationBuilder() 
  38.                         .withDeviceId(""
  39.                         .withBundleName(getBundleName()) 
  40.                         .withAbilityName(ThridAbility.class.getName()) 
  41.                         .build(); 
  42.                 intent.setOperation(operation); 
  43.                 startAbility(intent); 
  44.             } 
  45.         }); 
  46.  
  47.         findComponentById(ResourceTable.Id_btn_back).setClickedListener(new Component.ClickedListener() { 
  48.             @Override 
  49.             public void onClick(Component component) { 
  50.                 terminateAbility(); 
  51.             } 
  52.         }); 
  53.     } 
  54.  
  55.     @Override 
  56.     public void onActive() { 
  57.         super.onActive(); 
  58.     } 
  59.  
  60.     @Override 
  61.     public void onForeground(Intent intent) { 
  62.         super.onForeground(intent); 
  63.     } 

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

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

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

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

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

  1.   "easyGoVersion":  
  2.   "client":  
  3.   "logicEntities": [ 
  4.     { 
  5.       "head": { 
  6.         "function":  
  7.         "required":  
  8.       }, 
  9.       "body": { 
  10.         "mode":  
  11.         "abilityPairs": [ 
  12.           { 
  13.             "from": 自定義模式下必選,AbilityA的包名, 
  14.             "to""*"表示任意Page Ability, 
  15.           }表示A上啟動(dòng)任意Page Ability,觸發(fā)分屏(A左任意右) 
  16.         ], 
  17.         "Abilities": [ 
  18.           { 
  19.             "name":  
  20.             "defaultFullScreen":  
  21.           } 
  22.         ], 
  23.         "UX": { 
  24.           "isDraggable":  
  25.         } 
  26.       } 
  27.     } 
  28.   ] 

運(yùn)行效果

平板橫屏的運(yùn)行效果如下:

【木棉花】輕松玩轉(zhuǎn)平行視界(下)-鴻蒙HarmonyOS技術(shù)社區(qū)

小結(jié)

導(dǎo)航模式是一種系統(tǒng)提供的“分欄”,能幫助用戶在應(yīng)用內(nèi)高效地來回切換。

從上述運(yùn)行效果可以發(fā)現(xiàn)導(dǎo)航模式有三個(gè)特點(diǎn):

1. 右半屏總是最后一個(gè)窗口。

2. 左邊固定導(dǎo)航主頁(yè),左點(diǎn)右出,右點(diǎn)右出。

3. 左邊觸發(fā)的返回,左右分屏中的所有界面都將退出;右邊觸發(fā)的返回,右邊回到上一層級(jí),左邊保持不變。

全屏顯示Page Ability

另外關(guān)于平行視界狀態(tài)下,部分Page Ability希望以全屏來顯示,分別有動(dòng)態(tài)方法和靜態(tài)方法:

動(dòng)態(tài)方法:

全屏顯示:調(diào)用如下接口申請(qǐng)橫屏方向可進(jìn)入全屏顯示狀態(tài):

  1. getContext().setDisplayOrientation(AbilityInfo.DisplayOrientation.LANDSCAPE); 

 退出全屏:調(diào)用申請(qǐng)豎屏方向即可退出全屏狀態(tài):

  1. getContext().setDisplayOrientation(AbilityInfo.DisplayOrientation. PORTRAIT); 

 靜態(tài)方法:

在easygo.json文件的Abilities屬性中,將Page Ability的defaultFullScreen配置為true,即可實(shí)現(xiàn)Page Ability默認(rèn)以全屏顯示:

  1.        "name""com.test.mydemo2.MainAbility"
  2.        "defaultFullScreen""true" 
  3.      } 

 在config.json文件的Abilities屬性中,將Page Ability的orientation配置為landscape(橫屏),Page Ability會(huì)一直以全屏狀態(tài)顯示:

  1.         "orientation""landscape"
  2.         "visible"true
  3.         "name""com.test.mydemo2.MainAbility"
  4.         "icon""$media:icon"
  5.         "description""$string:mainability_description"
  6.         "label""$string:entry_MainAbility"
  7.         "type""page"
  8.         "launchType""standard" 
  9.       } 

購(gòu)物模式

代碼文件

代碼文件結(jié)構(gòu)如下:

【木棉花】輕松玩轉(zhuǎn)平行視界(下)-鴻蒙HarmonyOS技術(shù)社區(qū)

下面只給出部分重點(diǎn)代碼

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

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

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

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

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

  1.   "easyGoVersion"
  2.   "client"
  3.   "logicEntities": [ 
  4.     { 
  5.       "head": { 
  6.         "function"
  7.         "required"
  8.       }, 
  9.       "body": { 
  10.         "mode": 0":購(gòu)物模式, 
  11.         "transActivities": [ 
  12.           過渡頁(yè)面列表 
  13.         ], 
  14.         "Abilities": [ 
  15.           { 
  16.             "name"
  17.             "defaultFullScreen"
  18.           } 
  19.         ], 
  20.         "UX": { 
  21.           "isDraggable"
  22.           "supportLock":, 可選,是否支持應(yīng)用內(nèi)用戶鎖定功能."true": 支持鎖定,;,"false": 不支持(缺省值為false
  23.         } 
  24.       } 
  25.     } 
  26.   ] 

運(yùn)行效果

平板橫屏的運(yùn)行效果如下:

【木棉花】輕松玩轉(zhuǎn)平行視界(下)-鴻蒙HarmonyOS技術(shù)社區(qū)

小結(jié)

購(gòu)物模式能有效解決寬屏設(shè)備上的顯示適配問題,適用于購(gòu)物類的場(chǎng)景和應(yīng)用。

從上述運(yùn)行效果可以發(fā)現(xiàn)購(gòu)物模式有三個(gè)特點(diǎn):

1. 左點(diǎn)右出。

2. 右邊點(diǎn)擊啟動(dòng)新的窗口,把當(dāng)前內(nèi)容往左推,新的內(nèi)容在右邊展示。

3. 左邊觸發(fā)的返回,左右側(cè)窗口內(nèi)的界面都將退出上一層級(jí)或首頁(yè);右邊觸發(fā)的返回,右側(cè)窗口回到上一層級(jí),不影響左邊的頁(yè)面。

后臺(tái)鎖定

應(yīng)用啟用平行視界后,特定的適合多任務(wù)并行/有多任務(wù)并行需求的場(chǎng)景,可使用后臺(tái)鎖定。

可通過以下進(jìn)行配置:

  1. "UX": { 
  2.         "supportLock""true" 
  3.       } 

 雙窗口顯示狀態(tài)會(huì)顯示鎖定按鈕,用戶點(diǎn)擊后可以進(jìn)行鎖定和解鎖操作;鎖定后,左右窗口不再關(guān)聯(lián),即左側(cè)打開新窗口在左側(cè)顯示,右側(cè)打開新窗口在右側(cè)顯示。例如普通購(gòu)物模式下,點(diǎn)擊右側(cè)屏幕的內(nèi)容,會(huì)把右側(cè)內(nèi)容向左推;直播場(chǎng)景鎖定后,直播固定在左側(cè)顯示,點(diǎn)擊右側(cè)內(nèi)容,更換右側(cè)的顯示內(nèi)容。

其它

  1.   "easyGoVersion": , 
  2.   "client": , 
  3.   "logicEntities": [ 
  4.     { 
  5.       "head": { 
  6.         "function": , 
  7.         "required"
  8.       }, 
  9.       "body": { 
  10.         "mode""0"
  11.         "abilityPairs": [ 
  12.           { 
  13.             "from": , 
  14.             "to"
  15.           } 
  16.         ], 
  17.         "defaultDualAbilities": {可選,應(yīng)用冷啟動(dòng)默認(rèn)打開首頁(yè)雙屏配置 
  18.           "mainPages": Page Ability包名,冷啟動(dòng)應(yīng)用打開此頁(yè)面時(shí),系統(tǒng)在左屏自動(dòng)啟動(dòng)的頁(yè)面, 
  19.           "relatedPage": Page Ability包名,冷啟動(dòng)應(yīng)用打開此頁(yè)面時(shí),系統(tǒng)在右屏自動(dòng)啟動(dòng)的頁(yè)面 
  20.         }, 
  21.         "transActivities": [ 
  22.  
  23.         ], 
  24.         "Abilities": [ 
  25.           { 
  26.             "name": , 
  27.             "defaultFullScreen"
  28.           } 
  29.         ], 
  30.         "UX": { 
  31.           "supportRotationUxCompat": 可選,是否開啟窗口縮放,用于提高轉(zhuǎn)屏應(yīng)用UX顯示兼容性(僅針對(duì)平板產(chǎn)品生效)."true": 支持;"false": 不支持(缺省值為false), 
  32.           "isDraggable": , 
  33.           "supportVideoFullscreen": 可選,是否支持視頻全屏(僅針對(duì)平板產(chǎn)品生效)."true": 支持;"false": 不支持(缺省值為false), 
  34.           "supportDraggingToFullScreen": 可選,是否支持在分屏和全屏之間拖動(dòng)切換."ALL": 所有設(shè)備上支持此功能;"PAD": 僅平板產(chǎn)品上支持此功能;,"FOLD": 僅折疊屏上支持此功能, 
  35.           "supportLock"
  36.         } 
  37.       } 
  38.     } 
  39.   ] 

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

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

https://harmonyos.51cto.com

 

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

2021-11-10 16:07:01

鴻蒙HarmonyOS應(yīng)用

2021-11-08 10:20:48

鴻蒙HarmonyOS應(yīng)用

2020-09-24 10:57:12

編程函數(shù)式前端

2021-11-15 10:15:37

鴻蒙HarmonyOS應(yīng)用

2023-08-18 14:39:02

2010-07-09 12:09:34

IT運(yùn)維Mocha BSM摩卡軟件

2010-09-01 10:09:32

CSS樣式

2013-11-01 10:41:52

Windows 8.1應(yīng)用技巧

2018-03-15 14:07:17

潤(rùn)乾Excel行列轉(zhuǎn)換

2010-09-06 12:46:05

無線網(wǎng)絡(luò)

2015-08-12 10:54:22

架構(gòu)云

2014-08-19 09:10:45

IT運(yùn)維

2019-03-15 11:07:35

華為云

2011-05-04 14:00:02

打印機(jī)Word打印

2010-05-07 10:47:18

微軟Live照片庫(kù)

2011-05-04 09:56:54

打印機(jī)Word打印

2021-10-28 14:58:15

鴻蒙HarmonyOS應(yīng)用

2010-01-15 10:14:21

C++ Builder

2010-07-13 09:39:58

SolarisZFS文件系統(tǒng)
點(diǎn)贊
收藏

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