启动页作为应用程序首次出现的页面,该页面提供一些预加载数据的提前获取,防止应用程序出现白屏等异常,如是否第一次访问应用程序并开启应用欢迎页;判断用户登录信息进行页面跳转;消息信息懒加载等。
常见启动页参数如下表所示:
| 属性 | 类型 | 描述 | 必填 |
|---|---|---|---|
| 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%')
}
}
预览效果如下图所示:


审核编辑黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
代码
+关注
关注
30文章
4976浏览量
74358 -
HarmonyOS
+关注
关注
80文章
2157浏览量
36279
发布评论请先 登录
相关推荐
热点推荐
HarmonyOS应用自定义键盘解决方案
自定义键盘是一种替换系统默认键盘的解决方案,可实现键盘个性化交互。允许用户结合业务需求与操作习惯,对按键布局进行可视化重构、设置多功能组合键位,使输入更加便捷和舒适。在安全防护层面,自定义键盘可以
讲解一下HarmonyOS中的几个自定义组件用到的知识
HarmonyOS 的 Component 组件对外提供了一个 DrawTask 接口,通过 addDrawTask 方法为组件添加一个 DrawTask,让开发者可以进行自定义绘制逻
发表于 03-16 16:05
OpenHarmony自定义组件介绍
观察到了变化,将启动重新渲染。
2.根据框架持有的两个map(自定义组件的创建和渲染流程中第4步),框架可以知道该状态变量管理了哪些UI组件,以及这些UI
发表于 09-25 15:36
HarmonyOS 中的几个自定义控件介绍
HarmonyOS 开发自定义组件目前还不是很丰富,在开发过程中常常会有一些特殊效果的组件,这就需要我们额外花一些时间实现。
OpenHarmony自定义组件FlowImageLayout
组件介绍 本示例是OpenHarmony自定义组件FlowImageLayout。 用于将一个图片列表以瀑布流的形式显示出来。 调用方法
发表于 03-21 10:17
•3次下载
OpenHarmony自定义组件ProgressWithText
组件介绍 本示例是OpenHarmony自定义组件ProgressWithText。 在原来进度条的上方加了一个文本框,动态显示当前进度并调整位置。 调用方法
发表于 03-23 14:03
•1次下载
OpenHarmony自定义组件CircleProgress
组件介绍 本示例是OpenHarmony自定义组件CircleProgress。 用于定义一个带文字的圆形进度条。 调用方法
发表于 03-23 14:06
•4次下载
适用于鸿蒙的自定义组件框架Carbon案例教程
项目名称:Carbon 所属系列:ohos的第三方组件适配移植 功能:一个适用于鸿蒙的自定义组件框架,帮助快速实现各种需要的效果 项目移植状态:大部分移植 调用差异:基本没有使用差异,可以参照
发表于 04-07 09:49
•5次下载
鸿蒙ArkUI实例:【自定义组件】
组件是 OpenHarmony 页面最小显示单元,一个页面可由多个组件组合而成,也可只由一个组件组合而成,这些组件可以是ArkUI开发框架自带系统组
HarmonyOS开发案例:【UIAbility和自定义组件生命周期】
本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility,描述了Create、Foreground、Background、Destroy四种生命周期。对于页面
自定义HarmonyOS启动页组件
评论