HarmonyOS鸿蒙Next中应用启动后,如何去除持续2秒左右闪逝的"白色主窗口+灰色窗口+黑色窗口”?

HarmonyOS鸿蒙Next中应用启动后,如何去除持续2秒左右闪逝的"白色主窗口+灰色窗口+黑色窗口”? 要开发了一个video应用,结果应用启动后,持续2秒左右闪现的"白色主窗口+灰色窗口+黑色窗口”,才显示期待的播放界面。

感觉好无语啊,我要的是应用启动后,直接进入期待的播放界面,而不是中间乱七八糟的无用窗口!

新建的project工程代码,不能做人性化点吗?应用启动后,乱七八糟的窗口切换,怎么好意思给用户用?

DevEco Studio 3.1 Release

Build Version: 3.1.0.500, built on April 28, 2023

project配置:Stage模型,API9

cke_916.png

白色窗口

cke_5689.png

灰色窗口

cke_6723.png

黑色窗口

cke_606.png

视频播放窗口

index.ets文件

import window from '@ohos.window';
// 测试本地视频及网络视频播放
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  controller: VideoController = new VideoController();
  previewUris: Resource = $r('app.media.preview');
  innerResource: string = 'https://boot-video.xuexi.cn/video/1006/p/f2bcd0fc1fa55c6e448ba1dd098e9ce3-3d432a53bcd64d8b80fa96e4a86cf5fe-2.mp4';
  build() {
    Row() {
      Column() {
        Video({
          src: this.innerResource,
          previewUri: this.previewUris,
          controller: this.controller
        })
        .controls(false)
        .objectFit(ImageFit.Contain)
        .autoPlay(true)
      }
      .width('100%')
      .height('100%')
    }
    .width('100%')
    .height('100%')
  }
}

EntryAbility.ts文件

import UIAbility from '@ohos.app.ability.UIAbility';
import hilog from '@ohos.hilog';
import window from '@ohos.window';

export default class EntryAbility extends UIAbility {
  onCreate(want, launchParam) {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  }

  onDestroy() {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
  }

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

    // 去状态栏、导航栏
    windowStage.getMainWindow((err, data) => {
      if (err.code) { return; }
      data.setWindowSystemBarEnable([]);
    });

    windowStage.loadContent('pages/Index', (err, data) => {
      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. Data: %{public}s', JSON.stringify(data) ?? '');
    });
  }

  onWindowStageDestroy() {
    // Main window is destroyed, release UI related resources
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
  }

  onForeground() {
    // Ability has brought to foreground
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
  }

  onBackground() {
    // Ability has back to background
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
  }
}

更多关于HarmonyOS鸿蒙Next中应用启动后,如何去除持续2秒左右闪逝的"白色主窗口+灰色窗口+黑色窗口”?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,应用启动时出现的“白色主窗口+灰色窗口+黑色窗口”闪逝现象,通常是由于应用启动时的窗口初始化过程导致的。要去除这种现象,可以通过以下方式优化应用启动流程:

  1. 设置启动页主题:在config.json文件中,为应用设置一个启动页主题,避免系统默认的窗口背景色。可以在"abilities"节点下,为"launchType""standard"的Ability配置"theme"属性,指定一个自定义的启动页主题。

  2. 优化启动页布局:在启动页的布局文件中,使用与应用主界面一致的背景色或设计,避免出现明显的颜色切换。可以在resources/base/layout目录下,修改启动页的布局文件,确保背景色与主界面一致。

  3. 减少启动时间:通过优化应用启动逻辑,减少启动时间,缩短窗口初始化过程的可见时间。可以在onStart方法中,尽量减少耗时操作,确保应用快速进入主界面。

  4. 使用SplashScreen API:HarmonyOS提供了SplashScreen API,可以自定义启动页的显示内容和时间。通过调用SplashScreen相关接口,可以控制启动页的显示和隐藏,避免默认窗口背景色的出现。

通过以上方法,可以有效去除应用启动时的窗口闪逝现象,提升用户体验。

更多关于HarmonyOS鸿蒙Next中应用启动后,如何去除持续2秒左右闪逝的"白色主窗口+灰色窗口+黑色窗口”?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,应用启动时出现的“白色主窗口+灰色窗口+黑色窗口”闪屏现象,通常是由于应用启动时加载资源的过渡效果。

可以通过以下步骤优化:

  1. 设置启动主题:在res/values/styles.xml中定义一个启动主题,设置windowBackground为应用的启动图或背景色。
  2. 应用启动主题:在AndroidManifest.xml中为启动Activity应用该主题。
  3. 异步加载资源:在onCreate方法中使用异步任务加载资源,避免阻塞UI线程。

通过这些步骤,可以有效减少或消除启动时的闪屏现象,提升用户体验。

回到顶部