石学元 發表於 2020-10-26 09:22:00

Uni-App 启动页和引导页介绍

<h1>Uni-App 启动页和引导页介绍</h1>
<p>Uni-App 启动页和引导页是两个不同的东西,启动页是 Uni-App 自带的,不可去掉,只能修改相关配置。而引导页完全是需要开发者自行开发的。</p>
<p><img src="http://cdn.javanx.cn/wp-content/themes/lensnews2.2/images/201909/7/2.png" alt="uni-app: 引导页功能如何实现?" data-original="http://cdn.javanx.cn/wp-content/themes/lensnews2.2/images/201909/7/2.png"></p>
<p>上面的图,就是Uni-App 启动页,那开发者可以对它进行哪些配置呢?</p>
<p><img src="http://cdn.javanx.cn/wp-content/themes/lensnews2.2/images/201909/7/20190919150751.png" alt="uni-app: 引导页功能如何实现?" data-original="http://cdn.javanx.cn/wp-content/themes/lensnews2.2/images/201909/7/20190919150751.png"></p>
<p>可以配置:<br>1、是否等待首页加载完成在关闭启动界面</p>
<blockquote>
<p>设置为true,则splash的关闭逻辑为:App启动时,App引擎自动检测首页渲染情况,若首页未渲染(白屏),则不关闭splash;否则,关闭splash;若启动时间超过10秒,则不管首页是否白屏,自动关闭splash</p>

</blockquote>
<p><strong>注意</strong>:若App启动时有动态显示其他页面的需求,场景举例:</p>
<p>欢迎页场景:首次启动,显示App欢迎页;否则,显示首页内容<br>登录页场景:用户未登录,打开登录页;否则,显示首页内容<br>此时,App引擎无法高效判断首页及跳转页渲染情况,建议将alwaysShowBeforeRender 设置为false,开发者手动调用 plus.navigator.closeSplashscreen() 关闭启动界面。</p>
<p>2、是否在程序启动界面显示等待雪花</p>
<p>3、是否自动关闭程序启动界面</p>
<blockquote>
<p>autoclose 可设置App引擎是否自动关闭splash,默认为true;若修改为false,则需开发者手动调用 plus.navigator.closeSplashscreen() 方法关闭启动图。但是这个时间不能太晚,6s 超时后依旧会主动关闭。</p>

</blockquote>
<p>4、启动界面在应用的首页面加载完毕后延迟关闭的时间</p>
<blockquote>
<p>启动界面在应用的首页加载完毕后延迟关闭的时间,单位为毫秒,仅在 autoclose 设置为 true 时有效。</p>

</blockquote>
<p><strong>注意</strong>:这个 delay 不能任意使用,从应用启动到 splash 关闭的总时长,不会超过 6s。也就是说,delay 的时长也是计算在这个 6s 的限制内。</p>
<p><img src="http://cdn.javanx.cn/wp-content/themes/lensnews2.2/images/201909/7/20190919150950.png" alt="uni-app: 引导页功能如何实现?" data-original="http://cdn.javanx.cn/wp-content/themes/lensnews2.2/images/201909/7/20190919150950.png"></p>
<p>Uni-App 引导页,引导页很多都是安装app,第一次打开才会显示,后面打开都不会出现。大多显示内容是,告诉用户如何操作,或者核心介绍app作用等。</p>
<p>下面我们就来实现一个超级简单的Uni App引导页。</p>
<p>&nbsp;</p>
<h1 id="h1-uni-app-"><span class="header-link octicon octicon-link">Uni-App 简单引导页示例</span></h1>
<p>第一步:建3个页面文件。在pages目录下,新建index/init.vue、index/guide.vue、index/home.vue。</p>
<p>对应pages.json:</p>
<div class="code-toolbar">
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
    </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pages</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: [{
      </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">path</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pages/index/init</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
      </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
            </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigationBarTitleText</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">入口页</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
      }
    }, {
      </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">path</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pages/index/guide</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
      </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
            </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigationBarTitleText</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">引导页</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
            </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">titleNView</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
            </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">app-plus</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
                </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">bounce</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">none</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            }
      }
    }, {
      </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">path</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pages/index/home</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
      </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
            </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigationBarTitleText</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">首页</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
            </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigationBarTextStyle</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
      }
    }]
}</span></pre>
</div>
<p>&nbsp;</p>
</div>
<p>注意排放顺序,init一定要第一个,作为入口页面。</p>
<p>init.vue</p>
<div class="code-toolbar">
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">onLoad() {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 从本地缓存中同步获取指定 key 对应的内容,用于判断是否是第一次打开应用</span>
<span style="color: rgba(0, 0, 255, 1)">const</span> value = uni.getStorageSync(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">launchFlag</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (value) {
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 如何已经有,直接去home首页</span>
<span style="color: rgba(0, 0, 0, 1)">    uni.switchTab({
      url: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/pages/index/home</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
    });
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 没有值,跳到引导页,并存储,下次打开就不会进去引导页</span>
<span style="color: rgba(0, 0, 0, 1)">    uni.setStorage({
      key: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">launchFlag</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      data: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
    });
    uni.redirectTo({
      url: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/pages/index/guide</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
    });
}
}</span></pre>
</div>
<p>&nbsp;</p>
<pre class="language-javascript"><code class="language-javascript"><span class="token function">&nbsp;</span></code></pre>
</div>
<p>然后我们guide.vue页面就可以写引导页的内容了。</p>
<div class="code-toolbar">
<div class="cnblogs_code">
<pre>&lt;template&gt;
    &lt;view id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">guide</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
      &lt;<span style="color: rgba(0, 0, 0, 1)">swiper
      </span><span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">swiper</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
      circular
      :indicator</span>-dots=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">true</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
      :current</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">tabIndex</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
      @change</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">changeTab</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
            &lt;swiper-<span style="color: rgba(0, 0, 0, 1)">item
      </span><span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
      v</span>-<span style="color: rgba(0, 0, 255, 1)">for</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">(item, index) in guidelList</span><span style="color: rgba(128, 0, 0, 1)">"</span> :key=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">index</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
                &lt;image :src=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item.src</span><span style="color: rgba(128, 0, 0, 1)">"</span> mode=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">aspectFill</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;&lt;/image&gt;
            &lt;/swiper-item&gt;
      &lt;/swiper&gt;
    &lt;/view&gt;
&lt;/template&gt;</pre>
</div>
<p>&nbsp;</p>
</div>
<p>假设我们引导页时一个swiper轮播试的方式</p>
<p><img src="http://cdn.javanx.cn/wp-content/themes/lensnews2.2/images/201909/7/20190919153628.png" alt="uni-app: 引导页功能如何实现?"></p>
<p>&nbsp;</p>
<p>记得pages.json里面引导页去掉头部标题栏,同时设置样式使swiper全屏。</p>
<p>&nbsp;</p>
<div class="code-toolbar">
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">titleNView</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(0, 0, 255, 1)">false</span>,</pre>
</div>
<pre class="language-json"><code class="language-json"><span class="token property">&nbsp;</span></code></pre>
</div>
<p>现在很多app,都加了广告视频,作为app引导页,Uni-APP如何实现了,其实和上面swiper一样,但是还是有很多需要注意的地方。</p>
<h1 id="h1-uni-app-"><span class="header-link octicon octicon-link">Uni-App 视频引导页示例</span></h1>
<p>我们先了解一波,Uni-APP中video组件提供了那些api?<br>src 要播放视频的资源地址</p>
<p>autoplay 是否自动播放</p>
<p>loop 是否循环播放</p>
<p>muted 是否静音播放</p>
<p>initial-time 指定视频初始播放位置,单位为秒(s)。</p>
<p>duration 指定视频时长,单位为秒(s)。</p>
<p>controls 是否显示默认播放控件(播放/暂停按钮、播放进度、时间)</p>
<p>danmu-list Object Array 弹幕列表</p>
<p>danmu-btn 是否显示弹幕按钮,只在初始化时有效,不能动态变更</p>
<p>enable-danmu 是否展示弹幕,只在初始化时有效,不能动态变更</p>
<p>page-gesture 在非全屏模式下,是否开启亮度与音量调节手势 微信小程序、H5<br>direction 设置全屏时视频的方向,不指定则根据宽高比自动判断。有效值为 0(正常竖向), 90(屏幕逆时针90度), -90(屏幕顺时针90度)</p>
<p>show-progress 若不设置,宽度大于240时才会显示</p>
<p>show-fullscreen-btn 是否显示全屏按钮</p>
<p>show-play-btn 是否显示视频底部控制栏的播放按钮</p>
<p>show-center-play-btn 是否显示视频中间的播放按钮</p>
<p>enable-progress-gesture 是否开启控制进度的手势</p>
<p>objectFit String contain 当视频大小与 video 容器大小不一致时,视频的表现形式。contain:包含,fill:填充,cover:覆盖 微信小程序、H5<br>poster 视频封面的图片网络资源地址,如果 controls 属性值为 false 则设置 poster 无效</p>
<p>@play 当开始/继续播放时触发play事件</p>
<p>@pause 当暂停播放时触发 pause 事件</p>
<p>@ended 当播放到末尾时触发 ended 事件</p>
<p>@timeupdate 播放进度变化时触发,event.detail = {currentTime, duration} 。触发频率 250ms 一次</p>
<p>@fullscreenchange 当视频进入和退出全屏时触发,event.detail = {fullScreen, direction},direction取为 vertical 或 horizontal</p>
<p>@waiting 视频出现缓冲时触发</p>
<p>@error 视频播放出错时触发</p>
<p>总的来看,功能还是非常的强大,而且还支持弹幕,这是我没有想到的。</p>
<p><strong>视频格式支持情况:</strong></p>
<p>H5平台:支持支持的视频格式视浏览器而定,一般通用的都支持:mp4、webm 和 ogg。(<code>&lt;video/</code>&gt; 组件编译到 H5 时会替换为标准 html 的 video 标签)。H5端也可以自行在条件编译里使用video.js等三方库,这些库可以自动判断环境兼容以决定使用标准video或flash来播放。</p>
<p>小程序平台:各小程序平台支持程度不同,详见各家文档:微信小程序视频组件文档、支付宝不支持video组件、百度小程序视频组件文档、头条小程序视频组件文档</p>
<p>App平台: 支持本地视频(mp4/flv)、网络视频地址(mp4/flv/m3u8)及流媒体(rtmp/hls/rtsp)。</p>
<p>下面,用video做一个引导页:<br>guide.vue html模板</p>
<div class="code-toolbar">
<div class="cnblogs_code">
<pre>&lt;template&gt;
    &lt;view id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">guide</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
      &lt;<span style="color: rgba(0, 0, 0, 1)">video
            id</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">video</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            src</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/static/guide.mp4</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            :direction</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">0</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            :autoplay</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">false</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            :controls</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">false</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            :show</span>-play-btn=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">false</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            :show</span>-center-play-btn=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">false</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            :enable</span>-progress-gesture=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">false</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            objectFit</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">fill</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            @timeupdate</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">timeupdate</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
            @ended</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">goIndex</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;&lt;/video&gt;
      &lt;cover-view @click=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">goIndex</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;立即体验&lt;/cover-view&gt;
    &lt;/view&gt;
&lt;/template&gt;</pre>
</div>
<p>&nbsp;</p>
</div>
<p>guide.vue javascript</p>
<p>&nbsp;</p>
<div class="code-toolbar">
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">onShow() {
let videoContext </span>= uni.createVideoContext(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">video</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">)
videoContext.play()
},
methods: {
timeupdate(</span><span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)">){
    uni.getSystemInfo({
      success: (data) </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(data.platform==<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">ios</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">) {
          </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)">.detail){
            </span><span style="color: rgba(0, 0, 255, 1)">event</span>.detail.diff = <span style="color: rgba(0, 0, 255, 1)">event</span>.detail.duration - <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)">.detail.currentTime;
            </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">event</span>.detail.diff &lt; <span style="color: rgba(128, 0, 128, 1)">0.4</span><span style="color: rgba(0, 0, 0, 1)">){
            </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.goIndex()
            }
          }
      }
      }
    })

},
goIndex(){
    uni.switchTab({
      url: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/pages/index/index</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
    });
}
}</span></pre>
</div>
<pre class="language-javascript"><code class="language-javascript"><span class="token function">&nbsp;</span></code></pre>
</div>
<p>这里为什么写的有点点复杂?下面详细讲讲:<br>1、为什么没有做成自动播放?</p>
<blockquote>
<p>如果配置了“等待首页加载完成在关闭启动界面”,自动播放,就好关闭启动页就进去到了首页,因为视频播放也会占用加载时间,会在启动页面等待。</p>

</blockquote>
<blockquote>
<p>uni.createVideoContext(videoId, this)。创建并返回 video 上下文 videoContext 对象。在自定义组件下,第二个参数传入组件实例this,以操作组件内&nbsp;<code>&lt;video&gt;</code>&nbsp;组件。</p>

</blockquote>
<p>2、为什么要timeupdate监听视频播放?</p>
<blockquote>
<p>这里涉及到一个兼容问题,android,可以在ended事件后,直接到首页,但是iOS会出现一下短暂的暂停样式(显示了播放按钮),所以这里用监听播放进度,来计算快要播放完毕,就跳走。</p>

</blockquote>
<blockquote>
<p>uni.getSystemInfo。获取设备系统信息。</p>

</blockquote>
<p>3、为什么用cover-view,不直接用view组件?</p>
<blockquote>
<p>因为部分组件如map、video、textarea、canvas通过原生控件实现,原生组件层级高于前端组件,为了能正常覆盖原生组件,所以使用cover-view。这样我们就可以在video上面显示按钮,用户可以跳过视频直接进去首页。</p>

</blockquote>
<p><img src="http://cdn.javanx.cn/wp-content/themes/lensnews2.2/images/201909/7/3.gif" alt="uni-app: 引导页功能如何实现?"></p>
<p>&nbsp;</p>
<p>init.vue这个页面 如果页面是空白的 不布局,百分百的当下次重启app运行,会在init.vue页面等待一下 再去首页,会给你感觉是白屏一下。其实就是因为init.vue页面 没布局,空白页面,然后又跳转到首页了</p>
<p>app.vue里面好像不能跳,那就去init.vue的onShow里面判断就好了,目前我是onShow里面处理的,好像没有白屏现象</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/plBlog/p/13876792.html
頁: [1]
查看完整版本: Uni-App 启动页和引导页介绍