美文网首页
HarmonyOS(鸿蒙)应用/服务开发window_modal

HarmonyOS(鸿蒙)应用/服务开发window_modal

作者: 蜗牛学开车 | 来源:发表于2022-11-21 14:59 被阅读0次

    熟悉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 //设置为弹窗模态(卡片样式)
                }
            }
        })
    }
    

    相关文章

      网友评论

          本文标题:HarmonyOS(鸿蒙)应用/服务开发window_modal

          本文链接:https://www.haomeiwen.com/subject/ywqnxdtx.html