uni-app 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 回复
视频演示
https://mp-49000033-70d1-48ef-bbc2-e1bbb527e943.cdn.bspapp.com/4b8614322976d9c200d1b2b7209c6b1b.mp4
在 uni-app 中,使用自定义启动图时出现抖动的情况,通常是因为启动图展示的时间与页面加载的时间不匹配,导致页面加载完成后,启动图消失时出现视觉上的抖动。以下是可能的原因和解决方案:
原因分析:
-
启动图展示时间过短
启动图展示时间太短,页面还未完全加载完成,启动图就已经消失,导致页面突然出现,产生抖动感。 -
启动图与页面背景不一致
启动图的背景颜色或设计与页面背景不一致,导致启动图消失时出现视觉上的突兀感。 -
页面加载性能问题
页面加载时间过长,导致启动图消失后页面仍在加载,出现抖动。 -
启动图切换逻辑问题
启动图的隐藏逻辑与页面加载逻辑不同步,导致切换时出现抖动。
解决方案:
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>