uni-app APP使用自定义启动图打开会出现抖动一下

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app APP使用自定义启动图打开会出现抖动一下

表格

项目 信息
产品分类 uniapp/App
PC开发环境 Windows
版本号 64
HBuilderX 正式
HBuilderX版本号 3.96
手机系统 Android
手机系统版本号 Android 14
手机厂商 OPPO
手机机型 OPPO 和 Vivo
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX
App下载地址 https://h5.abagui.com/apk/__UNI__FE58203_1101160544.apk

操作步骤:

  • 运行app

预期结果:

  • 希望解决这个抖动现象

实际结果:

  • 运行app,自定义启动图 出现抖动

bug描述:

  • APP使用自定义启动图,打开会出现抖动一下

附件


2 回复

在 uni-app 中,使用自定义启动图时出现抖动的情况,通常是因为启动图展示的时间与页面加载的时间不匹配,导致页面加载完成后,启动图消失时出现视觉上的抖动。以下是可能的原因和解决方案:


原因分析:

  1. 启动图展示时间过短
    启动图展示时间太短,页面还未完全加载完成,启动图就已经消失,导致页面突然出现,产生抖动感。

  2. 启动图与页面背景不一致
    启动图的背景颜色或设计与页面背景不一致,导致启动图消失时出现视觉上的突兀感。

  3. 页面加载性能问题
    页面加载时间过长,导致启动图消失后页面仍在加载,出现抖动。

  4. 启动图切换逻辑问题
    启动图的隐藏逻辑与页面加载逻辑不同步,导致切换时出现抖动。


解决方案:

1. 延长启动图展示时间

  • App.vue 中,使用 setTimeout 延长启动图的展示时间,确保页面加载完成后再隐藏启动图。
  • 示例代码:
    export default {
      onLaunch() {
        // 延长启动图展示时间
        setTimeout(() => {
          // 隐藏启动图
          uni.hideLaunchScreen();
        }, 2000); // 2秒后隐藏启动图
      },
    };

2. 确保启动图与页面背景一致

  • 在启动图的设计阶段,确保启动图的背景颜色、样式与页面的背景保持一致,避免视觉上的突兀感。

3. 优化页面加载性能

  • 减少页面初始加载的资源大小,优化图片、组件等资源,加快页面加载速度。
  • 使用分包加载、懒加载等技术,减少首次加载的压力。

4. 同步启动图隐藏与页面加载

  • 在页面加载完成后,手动调用 uni.hideLaunchScreen() 隐藏启动图,确保启动图隐藏与页面加载同步。
  • 示例代码:
    export default {
      onLaunch() {
        // 监听页面加载完成事件
        uni.onAppShow(() => {
          // 页面加载完成后隐藏启动图
          uni.hideLaunchScreen();
        });
      },
    };

5. 使用自定义启动页

  • 如果 uni-app 提供的启动图机制无法满足需求,可以自定义一个启动页组件,在页面加载完成后再跳转到主页面。
  • 示例代码:
    <template>
      <view v-if="showLaunchScreen" class="launch-screen">
        <!-- 自定义启动图内容 -->
      </view>
      <view v-else>
        <!-- 主页面内容 -->
      </view>
    </template>
    
    <script>
    export default {
      data() {
        return {
          showLaunchScreen: true,
        };
      },
      onLoad() {
        // 模拟启动图展示
        setTimeout(() => {
          this.showLaunchScreen = false;
        }, 2000); // 2秒后隐藏启动图
      },
    };
    </script>
    
    <style>
    .launch-screen {
      width: 100%;
      height: 100%;
      background-color: #ffffff;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    </style>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!