闪屏一致性修复:SplashPage 复刻系统启动窗,消除两屏比例不一致
根因(代码层面):启动有两套不同资源/渲染的"闪屏": - 系统启动窗(module.json5 startWindowIcon=$media:startIcon):1024×1024 方形(1:1),系统居中按图标尺寸渲染; - ArkUI 闪屏(SplashPage):launch_image 2436×1125 横图(2.17:1),ImageFit.Cover 全屏铺满,logo 明显更大。 两套资源宽高比与 logo 占比都不同、渲染机制不同 → 同一 logo 两屏尺寸/比例不一致,切换跳变; 且系统启动窗图标尺寸系统固定、无法放大到全屏,只能让 ArkUI 闪屏向系统启动窗看齐。 修复:SplashPage 改为白底 + 居中显示**同一个 startIcon**(同资源/同宽高比/同位置),进度条置底。 两屏视觉一致,切换无跳变。(模拟器实测:系统启动窗在该机型渲染为纯白,序列为 白底→白底+logo淡入+进度,全程白底、logo 单次出现尺寸恒定。) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
ccf5a2acec
commit
4877e13f9a
@@ -7,8 +7,10 @@ import { RouteName, BridgeGameParams } from '../routes/AppRoutes';
|
||||
* 进入即跑 StartupOrchestrator(本地配置→远程配置→资源准备→app_data 注入),
|
||||
* 完成后 replace 进大厅容器;被 showmessage 阻断时弹公告。
|
||||
*
|
||||
* 闪屏底图 launch_image 为**白底 + 金色 logo**,故覆盖层文字用深色(navy),
|
||||
* 进度条用品牌金色,且明确展示当前阶段中文文案(获取配置/检测升级/下载等)。
|
||||
* 🔴 与系统启动窗保持一致:systemWindow 用 module.json5 的 startWindowIcon($media:startIcon,
|
||||
* 1:1 方形)居中白底渲染;本页**复刻同一资源同一布局**——白底 + 居中同一个 startIcon,
|
||||
* 避免此前"系统窗(方形小图标) → 本页(横图全屏大 logo)"两套资源比例不一致导致的切换跳变。
|
||||
* 覆盖层文字用品牌 navy(白底可见),进度条金色,展示当前阶段中文文案。
|
||||
*/
|
||||
@Component
|
||||
export struct SplashPage {
|
||||
@@ -73,11 +75,10 @@ export struct SplashPage {
|
||||
build() {
|
||||
NavDestination() {
|
||||
Stack() {
|
||||
// 启动闪屏全屏背景(白底 + 金色 logo,docs/Res/LaunchImage)
|
||||
Image($r('app.media.launch_image'))
|
||||
.width('100%')
|
||||
.height('100%')
|
||||
.objectFit(ImageFit.Cover)
|
||||
// 与系统启动窗一致:白底 + 居中同一个 startIcon(Stack 默认居中,位置/尺寸对齐系统图标)
|
||||
Image($r('app.media.startIcon'))
|
||||
.width('38%')
|
||||
.objectFit(ImageFit.Contain)
|
||||
// 启动进度/公告叠加在底部(深色文字,白底可见)
|
||||
Column({ space: 14 }) {
|
||||
if (this.blocked === '') {
|
||||
@@ -112,6 +113,7 @@ export struct SplashPage {
|
||||
}
|
||||
.width('100%')
|
||||
.height('100%')
|
||||
.backgroundColor(Color.White)
|
||||
}
|
||||
.hideTitleBar(true)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user