0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

自定义HarmonyOS启动页组件

ITMING 来源:ITMING 作者:ITMING 2023-02-17 13:00 次阅读

启动页作为应用程序首次出现的页面,该页面提供一些预加载数据的提前获取,防止应用程序出现白屏等异常,如是否第一次访问应用程序并开启应用欢迎页;判断用户登录信息进行页面跳转;消息信息懒加载等。

常见启动页参数如下表所示:

属性 类型 描述 必填
timer number 倒计时时长,默认3秒 Y
isLogo boolean 显示图片类型。
false:常规图,默认;
true:logo图
N
backgroundImg ResourceStr 显示图片地址 N
companyName string 企业名称 N
mfontColor ResourceColor 企业名称字体颜色 N

常见启动页方法如下表所示:

方法 类型 描述 必填
skip void 跳转方法 Y

封装启动页参数类代码如下所示:

export class Splash {
  // 倒计时时长
  timer: number;
  // 显示Logo
  isLogo?: boolean = false;
  // 页面显示图片
  backgroundImg?: ResourceStr;
  // 企业名称
  companyName?: string;
  // 企业名称字体颜色
  mFontColor?: ResourceColor;

  constructor(timer: number, isLogo?: boolean, backgroundImg?: ResourceStr,
              companyName?: string, mFontColor?: ResourceColor) {
    this.timer = timer;
    this.isLogo = isLogo;
    this.backgroundImg = backgroundImg;
    this.companyName = companyName;
    this.mFontColor = mFontColor;
  }
}

自定义启动页组件代码如下所示:

@Component
export struct SplashPage {

  @State mSplash: Splash = new Splash(3);

  // 跳转方法
  skip: () => void;

  build() {
    // 底部企业名称显示堆叠组件
    Stack({ alignContent: Alignment.Bottom }) {
      // 图片和倒计时跳转页面堆叠组件
      Stack({ alignContent: Alignment.TopEnd }) {
        if (this.mSplash.isLogo) {
          Image(this.mSplash.backgroundImg).objectFit(ImageFit.None)
        }
        Button(`跳过 | ${this.mSplash.timer} s`, { type: ButtonType.Normal })
          .height(42)
          .padding({ left: 16, right: 16 })
          .margin({ top: 16, right: 16 })
          .fontSize(16).fontColor(Color.White)
          .backgroundColor(Color.Gray)
          .borderRadius(8)
          .onClick(() => {
            this.skip();
          })
      }
      .backgroundImage(this.mSplash.isLogo ? null : this.mSplash.backgroundImg)
      .backgroundImageSize(this.mSplash.isLogo ? null : { width: '100%', height: '100%' })
      .width('100%').height('100%')
      if (this.mSplash.companyName) {
        Text(this.mSplash.companyName)
          .width('100%').height(54)
          .fontColor(this.mSplash.mFontColor)
          .fontSize(14).fontWeight(FontWeight.Bold)
          .textAlign(TextAlign.Center)
      }
    }
    .width('100%').height('100%')
  }

  aboutToAppear() {
    // 倒计时处理
    let skipWait = setInterval(() => {
      this.mSplash.timer--;
      if (this.mSplash.timer === 0) {
        clearInterval(skipWait);
        this.skip();
      }
    }, 1000)
  }
}

自定义组件定义完成后,还需要在模块的index.ets中将组件导出,代码如下所示:

export { Splash, SplashPage } from './src/main/ets/components/splashpage/SplashPage';

在entry模块引入自定义模块teui,打开entry目录下的package.json并在dependencies依赖列中加入如下代码:

"@tetcl/teui": "file:../teui"

注:其中"@tetcl/teui"中"tetcl/teui"需要和自定义模块teui中package.json中name属性一致。若提交到npm中心仓可直接使用"@tetcl/teui": "版本号"方式引入。引入完成后需要执行编辑器上的Sync now或者npm install进行下载同步。

在具体的页面中导入自定义启动页组件代码如下所示:

import { Splash as SplashObj, SplashPage } from '@tetcl/teui'
import router from '@ohos.router';

注:为了和页面名称不冲突,对Splash作别名处理。

在页面中引入自定义组件SplashPage并填写相关属性值及跳转方法,代码如下所示:

@Entry
@Component
struct Splash {

  // 跳转到Index页面
  onSkip() {
    router.replaceUrl({
      url: 'pages/Index'
    })
  }

  build() {
    Row() {
      SplashPage({ mSplash: new SplashObj(5, true, $r('app.media.icon'),
        'xxxx有限公司', 0x666666), skip: this.onSkip})
      // 常规图
      // SplashPage({ mSplash: new SplashObj(5, false, $r('app.media.default_bg'), 
      //  'xxxx有限公司', 0xF5F5F5), skip: this.onSkip})
    }
    .height('100%')
  }
}

预览效果如下图所示:

自定义HarmonyOS启动页组件-开源基础软件社区自定义HarmonyOS启动页组件-开源基础软件社区

审核编辑黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4719

    浏览量

    68211
  • HarmonyOS
    +关注

    关注

    79

    文章

    1966

    浏览量

    29955
收藏 人收藏

    评论

    相关推荐

    HarmonyOS开发实例:【自定义Emitter】

    使用[Emitter]实现事件的订阅和发布,使用[自定义弹窗]设置广告信息。
    的头像 发表于 04-14 11:37 952次阅读
    <b class='flag-5'>HarmonyOS</b>开发实例:【<b class='flag-5'>自定义</b>Emitter】

    HarmonyOS开发案例:【 自定义弹窗】

    基于ArkTS的声明式开发范式实现了三种不同的弹窗,第一种直接使用公共组件,后两种使用CustomDialogController实现自定义弹窗
    的头像 发表于 05-16 18:18 1226次阅读
    <b class='flag-5'>HarmonyOS</b>开发案例:【 <b class='flag-5'>自定义</b>弹窗】

    讲解一下HarmonyOS中的几个自定义组件用到的知识

    HarmonyOS 的 Component 组件对外提供了一个 DrawTask 接口,通过 addDrawTask 方法为组件添加一个 DrawTask,让开发者可以进行自定义绘制逻
    发表于 03-16 16:05

    OpenHarmony自定义组件介绍

    观察到了变化,将启动重新渲染。 2.根据框架持有的两个map(自定义组件的创建和渲染流程中第4步),框架可以知道该状态变量管理了哪些UI组件,以及这些UI
    发表于 09-25 15:36

    鸿蒙上自定义组件的过程

       在实际开发过程中,我们经常会遇到一些系统原有组件无法满足的情况,而 HarmonyOS 提供了自定义组件的方式,我们使用自定义
    的头像 发表于 11-10 09:27 2819次阅读
    鸿蒙上<b class='flag-5'>自定义</b><b class='flag-5'>组件</b>的过程

    HarmonyOS 中的几个自定义控件介绍

    HarmonyOS 开发自定义组件目前还不是很丰富,在开发过程中常常会有一些特殊效果的组件,这就需要我们额外花一些时间实现。
    的头像 发表于 01-04 13:49 2177次阅读

    OpenHarmony自定义组件:ClearableInput和Keyboard

    组件介绍: 本示例包含了两个OpenHarmony自定义组件,一个是ClearableInput,另一个是Keyboard。 ClearableInput 定义了一个带清空图标的文本输
    发表于 03-18 15:21 1次下载
    OpenHarmony<b class='flag-5'>自定义</b><b class='flag-5'>组件</b>:ClearableInput和Keyboard

    OpenHarmony自定义组件FlowImageLayout

    组件介绍 本示例是OpenHarmony自定义组件FlowImageLayout。 用于将一个图片列表以瀑布流的形式显示出来。 调用方法
    发表于 03-21 10:17 3次下载
    OpenHarmony<b class='flag-5'>自定义</b><b class='flag-5'>组件</b>FlowImageLayout

    OpenHarmony自定义组件ProgressWithText

    组件介绍 本示例是OpenHarmony自定义组件ProgressWithText。 在原来进度条的上方加了一个文本框,动态显示当前进度并调整位置。 调用方法
    发表于 03-23 14:03 1次下载
    OpenHarmony<b class='flag-5'>自定义</b><b class='flag-5'>组件</b>ProgressWithText

    OpenHarmony自定义组件CircleProgress

    组件介绍 本示例是OpenHarmony自定义组件CircleProgress。 用于定义一个带文字的圆形进度条。 调用方法
    发表于 03-23 14:06 4次下载
    OpenHarmony<b class='flag-5'>自定义</b><b class='flag-5'>组件</b>CircleProgress

    适用于鸿蒙的自定义组件框架Carbon案例教程

    项目名称:Carbon 所属系列:ohos的第三方组件适配移植 功能:一个适用于鸿蒙的自定义组件框架,帮助快速实现各种需要的效果 项目移植状态:大部分移植 调用差异:基本没有使用差异,可以参照
    发表于 04-07 09:49 5次下载

    自定义视图组件教程案例

    自定义组件 1.自定义组件-particles(粒子效果) 2.自定义组件- pulse(脉冲b
    发表于 04-08 10:48 14次下载

    添加自定义属性控制fridaserver启动和停止

    添加自定义属性控制fridaserver启动和停止
    的头像 发表于 08-09 10:08 1595次阅读
    添加<b class='flag-5'>自定义</b>属性控制fridaserver<b class='flag-5'>启动</b>和停止

    鸿蒙ArkUI实例:【自定义组件

    组件是 OpenHarmony 页面最小显示单元,一个页面可由多个组件组合而成,也可只由一个组件组合而成,这些组件可以是ArkUI开发框架自带系统
    的头像 发表于 04-08 10:17 576次阅读

    HarmonyOS开发案例:【UIAbility和自定义组件生命周期】

    本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility,描述了Create、Foreground、Background、Destroy四种生命周期。对于页面
    的头像 发表于 05-10 15:31 1118次阅读
    <b class='flag-5'>HarmonyOS</b>开发案例:【UIAbility和<b class='flag-5'>自定义</b><b class='flag-5'>组件</b>生命周期】