HarmonyOS(鴻蒙)應用/服務開發window_modal配置說明

熟悉HarmonyOS(鴻蒙)的小夥伴都知道,鴻蒙應用是基於Ability的,一個鴻蒙應用可以包含多個Ability。

Ability框架模型具有兩種形態:

  1. 第一種形態爲FA模型。API 8及其更早版本的應用程序只能使用FA模型進行開發。FA模型將Ability分爲FA(Feature Ability)和PA(Particle Ability)兩種類型,其中FA支持Page Ability,PA支持Service Ability、Data Ability、以及FormAbility。
  2. 第二種形態爲Stage模型。從API 9開始,Ability框架引入了Stage模型作爲第二種應用框架形態,Stage模型將Ability分爲PageAbility和ExtensionAbility兩大類,其中ExtensionAbility又被擴展爲ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等一系列ExtensionAbility,以便滿足更多的使用場景。

從Ability的兩種形態可以看出,作爲客戶端最主要的還是FA(PageAbility),一個應用通常情況下可以沒有PA但一定有FA。所以PageAbilty是很重要的,什麼是PageAbility呢?官方的解釋是:PageAbility是具備ArkUI實現的Ability,是用戶具體可見並可以交互的Ability實例。

下面我們再來說一下HarmonyOS中PageAbility的各種形態:

1. 全屏

2. 半模態

3. 半模態的全屏模式

這種模式跟全屏的效果幾乎一樣,但是默認轉場動畫不同,這種模式的Ability進場動畫是從底部彈出然後頂滿全屏。

4. 彈窗模態(卡片樣式)

以上所說的四種模式是通過給intent設置window_modal進行設置的。而設置window_modal時是需要傳入int值的,下面是window_modal的取值範圍及意義:

0  ->  全屏 (默認)
1  ->  半模態
2  ->  半模態的全屏模式
3  ->  彈窗模態(卡片樣式)

給intent設置window_modal有兩種:
A. 重寫PageAbilityonStart方法並通過intent.setParams("window_modal", 1)進行設置:

@Override
    public void onStart(Intent intent) {
        intent.setParams("window_modal", 1);  //設置爲半模態樣式的頁面。
        setPageParams(null, intent.getParams());
    }

B. 在js或eTS中通過featureAbility.startAbility()的方式

import featureAbility from '@ohos.ability.featureAbility'
import app from '@system.app';

startAbility(abilityName, data = {}){
    featureAbility.startAbility({
        want: {
            bundleName: app.getInfo().appID,
            abilityName,
            parameters: {
                param: data,  //給下個頁面傳值
                window_modal: 3 //設置爲彈窗模態(卡片樣式)
            }
        }
    })
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章