当前位置: 首页 > article >正文

HarmonyOS 实现自定义启动页

请添加图片描述

👨🏻‍💻 热爱摄影的程序员
👨🏻‍🎨 喜欢编码的设计师
🧕🏻 擅长设计的剪辑师
🧑🏻‍🏫 一位高冷无情的全栈工程师
欢迎分享 / 收藏 / 赞 / 在看!

要在 HarmonyOS 中实现自定义启动页,需要在项目中 Ability 的 onWindowStageCreate 和 onWindowStageRestore 方法中获取应用主窗口, 并通过调用窗口强制全屏布局接口 setWindowLayoutFullScreen 将窗口设置为全屏。

/**
 * 将窗口设置为全屏
 * @param windowStage
 */
setFullSize(windowStage: window.WindowStage) {
    let windowClass: window.Window = windowStage.getMainWindowSync(); // 获取应用主窗口
    // 设置窗口全屏
    let isLayoutFullScreen = true;
    windowClass.setWindowLayoutFullScreen(isLayoutFullScreen)
        .then(() => {
            console.info('Succeeded in setting the window layout to full-screen mode.');
        })
        .catch((err: BusinessError) => {
            console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err));
        });
}

新建启动页 Splash.ets ,在该页面中的 aboutToAppear 生命周期钩子中使用 timer 定时器,实现延时跳转功能。最后在组件结构销毁之前的 aboutToDisappear 生命周期钩子中销毁 timer 定时器。

@State countdown: number = 5; // 倒计时,默认 5 秒
readonly DURATION: number = 1000; // 倒计时间隔
private timer: number = 0; // 定时器

aboutToAppear(): void {
  this.startTiming();
}

/**
 * 开始倒计时
 */
startTiming() {
  // 设置时间间隔
  this.timer = setInterval(() => {
    this.countdown--;
    if (this.countdown === 0) {
      this.clearTiming();
      this.jumpToMainPage();
    }
  }, this.DURATION);
}

/**
 * 清除定时器
 */
clearTiming() {
  if (this.timer !== null) {
    clearInterval(this.timer);
    this.timer = 0;
  }
}

/**
 * 跳转到主页
 */
jumpToMainPage() {
  this.clearTiming();
  router.replaceUrl({
    url: 'pages/Index'
  });
}

/**
 * 组件结构销毁之前时
 */
aboutToDisappear() {
  // 清除定时器
  this.clearTiming();
}

运行效果如下:

在这里插入图片描述


http://www.kler.cn/news/309907.html

相关文章:

  • 鸿蒙开发协调布局CollapsibleLayout
  • Unity3d 以鼠标位置点为中心缩放视角(正交模式下)
  • 待办: 杂七杂八——大杂烩.....懒得整理了,我自己凑合看
  • 新手学习Python第七天-新手笔记
  • 基于STM32C8T6的CubeMX:HAL库点亮LED
  • Datawhale X 李宏毅苹果书 AI夏令营 《深度学习详解》第十九章 ChatGPT
  • Python 入门教程(3)基础知识 | 3.6、标准输入与输出
  • c++----模板(进阶)
  • 什么是VHDX文件?
  • 国科云域名解析课堂:一个域名可以解析到多个IP地址吗?
  • 高校能耗管控方案如何做到节能减排
  • 【Python123题库】#绘制温度曲线 #XRD谱图绘制 #态密度曲线绘制
  • 3个WebSocket的.Net开源项目
  • 基于vue框架的宠物店管理系统的设计与实现4czn0(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • StackTrace在.Net中获取当前线程的堆栈跟踪信息
  • 【MySQL】MySQL连接池原理与简易网站数据流动是如何进行
  • mysql笔记7(单表查询)
  • 计算机毕业设计 健身房管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Github 2024-09-12 Go开源项目日报Top10
  • 智能车镜头组入门(二)电路硬件的设计
  • mysql的高级查询:函数的运用(日期/数字/字符/聚合)及分组查询
  • 清理C盘缓存的垃圾,专业清理C盘缓存垃圾的步骤与策略
  • 深度学习-点击率预估-研究论文2024-09-14速读
  • LeetCode 每日一题 2024/9/9-2024/9/15
  • 计算机毕业设计 扶贫助农系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • qt-creator-10.0.2之后版本的jom.exe编译速度慢下来了
  • JVM: JDK内置命令 - JPS
  • 计算机毕业设计 《计算机基础》网上考试系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Java入门程序-HelloWorld
  • 实习项目|苍穹外卖|day11