项目中需要这样一个功能,需要隐藏video原生的进度条,并且还能进入全屏,进入全屏后还能退出全屏。由于原生的video组件在隐藏进度条后就没有进入全屏和退出全屏按钮,此时我们必须要用js去控制进入和退出全屏。
html:
<video id="myVideo" class="myVideo" :custom-cache="false"
:src="xxx" :autoplay="false" :controls="false" :page-gesture='true'
:show-progress="true" :show-play-btn="false" :show-center-play-btn="false"
:enable-progress-gesture="false" @loadedmetadata="loadedmetadata" @timeupdate="timeupdate"
@ended="ended" @error="videoErrorCallback" @fullscreenchange="playerFullScreen"
@click="hideAndShow">
<cover-view class="cover-container" v-if="onShow&&myVideo">
<template>
<cover-view class="currentTim" v-if="onShow&&myVideo">
{{currentProgress?currentProgress:'00:00'}}
</cover-view>
<cover-view class="progress-container">
<cover-view class="progress" v-if="onShow&&myVideo" :style="{width:progressWidth}">
<cover-view class="circle" v-if="onShow&&myVideo"></cover-view>
</cover-view>
<cover-view class="total-progress" v-if="onShow&&myVideo"></cover-view>
</cover-view>
<cover-view class="totalTim" v-if="onShow&&myVideo">{{totalProgress?totalProgress:'00:00'}}
</cover-view>
</template>
<cover-view class="screen" v-if="openScreen&&myVideo" @click="quitFullScreen">退出全屏</cover-view>
<cover-view class="screen" v-if="!openScreen&&myVideo" @click="getIntoScreen">全屏</cover-view>
</cover-view>
</video>
js:
methods:{
getIntoScreen() {
this.myVideo = uni.createVideoContext('myVideo')
// 进入全屏状态
this.myVideo.requestFullScreen();
this.openScreen = true;
},
quitFullScreen() {
this.myVideo = uni.createVideoContext('myVideo')
// 退出全屏状态
this.myVideo.exitFullScreen();
this.openScreen = false;
}
}
注意:cover-view可以覆盖video组件,可以在视频上写一些样式