首页 > 其他分享 >鸿蒙开发ArkUI沉浸式导航

鸿蒙开发ArkUI沉浸式导航

时间:2024-08-19 16:28:34浏览次数:11  
标签:沉浸 expandSafeArea Ability 鸿蒙 height window SafeAreaEdge ArkUI

1.沉浸式导航的效果是占用底部顶部或者其他挖孔区域的位置

沉浸式的样式

沉浸式的顶部样式

 

非沉浸式的样式

非沉浸式的样式

 

2.实现方式

    有三种实现放

        1.全局(Ability)

        2.页面

       3.指定元素

 

全局的实现方式(Ability)

 在你的Ability 中设置  在页面创建完成后 (onWindowStageCreate) 中

     

 onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

    windowStage.loadContent('pages/Index', (err) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
      
      let window = windowStage.getMainWindow ().then((window)=>{ 
         //沉浸式,取消所有留白
         window.setWindowLayoutFullScreen(true)
        
      }) 
      

    });
  }

2.在单个页面中

  // 页面打开的时候触发
  onPageShow() {
 
window.getLastWindow(getContext()).then(win => { //启用沉浸式导航 win.setWindowLayoutFullScreen(true) // // //获取安全区的大小,获取到的是px // //px2vp 将像素(px)转成vp // this.TopHeight = px2vp(win.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height); // this.BottomHeight = // px2vp(win.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR).bottomRect.height); }) }

 

3.指定某个元素

   需要使用expandSafeArea ,有两个传入参数

 

 扩大安全区

第一个参数 安全区域的类型。传入一个枚举数组 SafeAreaType
包含的值有
(SYSTEM 系统默认区域,包括状态栏和导航栏)
(CUTOUT 缺口或打孔。)
(KEYBOARD 键盘)

第二个参数 安全区域的边缘。传入一个枚举数组 SafeAreaEdge
包含的值有
   (TOP 安全区域的顶部边缘。)
(CUTOUT 安全区域的底部边缘。)
(START 从安全区域边缘开始。)
   (END安全区域的末端边缘。)
  Row() {
        Swiper() {

          Image(this.product.Images)
            .width("100%").height("100%")
            .interpolation(ImageInterpolation.Medium)
            .alt($r("app.media.avatar"))
//使用 expandSafeArea .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP,SafeAreaEdge.BOTTOM]) ForEach(this.product.Pictures, (picture: ProductPictureDto, index) => { Image(picture.CompleteImageFormet) .width("100%").height("100%") .interpolation(ImageInterpolation.Medium) }) } .loop(true).autoPlay(true) .interval(3000)

//使用 expandSafeArea .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP,SafeAreaEdge.BOTTOM]).height(300) } .height(300)

 

标签:沉浸,expandSafeArea,Ability,鸿蒙,height,window,SafeAreaEdge,ArkUI
From: https://www.cnblogs.com/manga/p/18367564

相关文章

  • ARKUI控件属性及使用
    TexttextOverflow,设置文本超出时的处理decoration设置自定义属性textCase设置文本字母大小写输出也可以添加onclick事件Image控件Image(scr:string|PixelMap|Resource)1.本地资源:创建文件夹,将本地图片放入ets文件夹下的任意位置Image(“images/maniu.jpg”)2.网......
  • 关于鸿蒙开发中容器组件Tabs的介绍
    当页面内容较多时,可以通过Tabs组件进行分类展示。Tabs基本用法structTabbarDemo{build(){//外层顶级容器Tabs(){TabContent(){//内容区域:只能有一个子组件Text('首页内容')}......
  • 关于鸿蒙开发中滚动容器Scroll的介绍
    当子组件的布局尺寸超过Scroll的尺寸时,内容可以滚动。Scroll的核心用法用法说明:Scroll设置尺寸设置溢出的子组件【只支持一个子组件】滚动方向:支持横向和纵向,默认纵向Scroll(){//只支持一个子组件Column(){//内容放在内部//尺寸超过Scrol......
  • 鸿蒙交互事件开发01——点击/拖拽/触摸事件
     如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。1  概  述  事件是人机交互的基础,鸿蒙开发中,事件分为两大类:a)通用事件;b)手势事件。......
  • 鸿蒙中hvigor自定义任务
    鸿蒙中,各个module都可以自定义hvigor任务进行一些编译期的操作,方便多模块打包时,进行编译期的一些修改和配置下面简单列举下自定义任务的创建import{hapTasks}from'@ohos/hvigor-ohos-plugin';let__Version='1.0.0'exportfunctionloadVersionFun(params){re......
  • 鸿蒙语言ArkTS
    鸿蒙语言ArkTS一.软件布局 可以备份多个ets文件(复制黏贴),但是只执行Index.ets 二.日志文件打印打开预览器就能查看代码运行效果,预览器实时更新(保存就更新)。console.log('说话内容','helloworld')//console.log的语法:console.log('解释',实际内容)会在日志里打印,解释......
  • 鸿蒙编译期变量使用
    需要修改对应module模块的hvigorfile.ts文件,修改内容如下import{hapTasks}from'@ohos/hvigor-ohos-plugin';//当前文件初始内容,不通模块有可能不一样,都不用动letmyParams='我是自定义参数'exportdefault{system:hapTasks,/*Built-inpluginofHvigor.It......
  • 【HarmonyOS】鸿蒙应用蓝牙功能实现 (一)
    【HarmonyOS】鸿蒙应用蓝牙功能实现前言蓝牙技术是一种无线通信技术,可以在短距离内传输数据。它是由爱立信公司于1994年提出的,使用2.4GHz的ISM频段,可以在10米左右的距离内进行通信。可以用于连接手机、耳机、音箱、键盘、鼠标、打印机等各种设备。特点是低功耗、低成本......
  • 鸿蒙HarmonyOS NEXT:使用axios方法请求实时天气数据
    通过axios方法请求高德天气查询api,实现获取实时天气数据,接下来是实现步骤:模块导入与数据准备:通过以下语句导入了必要的模块和数据:importaxios,{AxiosResponse,AxiosError}from'@ohos/axios'//导入axiosimport{cities}from'./tools/citys';//调用事先存好的城......
  • 在鸿蒙中如何实现pdf预览功能?
    在开发鸿蒙App时,你是否做过pdf预览功能,是否也和我一样碰壁了,那么来看看我是如何解决的吧,废话少说,直接上代码。在鸿蒙中如何实现pdf预览功能?一、预览本地pdf文件二、预览线上的pdf文件三、预览沙箱目录中pdf的文件(重点)四、建议一、预览本地pdf文件预览本地的pdf文......