????????uniapp官方的說法是因為頁面使用rpx,但是全屏和退出全屏自動計算屏幕尺寸不支持rpx,建議使用px。
? ? ? ? 但是因為uniapp端的開發都是使用rpx作為屏幕尺寸計算參數,不可能因為video全屏播放功能就整個全部修改,工作量大,耗時耗力。
? ? ? ? 所以就有了下面的解決方法。
? ? ? ? 我的方式是:通過創建空白頁面過渡。
????????1.新建blank.vue頁面:
<template><!-- 此空白頁面用于處理視頻全屏退出后頁面樣式混亂 --><view></view>
</template><script>export default {data() {return {}},methods: {},onLoad() {// #ifdef APP-PLUSplus.screen.unlockOrientation(); //解除屏幕方向的鎖定,但是不一定是豎屏;plus.screen.lockOrientation('portrait'); //鎖死屏幕方向為豎屏// #endifsetTimeout(() => {uni.navigateBack({delta: 1})}, 30)},}
</script><style></style>
? ? ? ? 2.video標簽監聽全屏事件:
<video id="videoId" ref="playVideo" :src="encodeURI(getVideo(resourceId))" controls autoplay@timeupdate="updateTime" @play="playToVideo" @fullscreenchange="screenChange"></video>
? ? ? ? 3. method方法中監聽退出全屏事件,如果退出,跳轉上述空白頁面。
methods: {screenChange(e) {//視頻全屏退出后頁面樣式混亂,跳轉空白頁處理后再返回本頁// #ifdef APP-PLUSif (!e.target.fullScreen) {uni.navigateTo({url: '/subpages/multimedia/blank',animationType: 'none',animationDuration: 0})}// #endif}}
? ? ? ? 4.在空白頁面中切換為豎屏后再返回video所在頁面。這時候rpx參數重新計算,不會污染頁面樣式。
? ? ? ? 5.效果: