uniapp小程序点击按钮打开图片/全屏播放视频组件

介绍了一个基于传入的数组来判断展示图片或全屏播放视频的组件,支持横竖屏切换,并提供了退出全屏时自动停止播放的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据传入的数组list来决定打开图片还是全屏播放视频,还有横竖屏等初始预设参数

组件.vue

<template>
	<view v-if="list">
		<view class="button" @click="openMedia()">打开图片/视频</view>
		<!-- 始终竖屏播放:direction="0" -->
		<video v-show="isOpenVideo" id="myVideo" :src="list[0]" @fullscreenchange="fullscreenchange"></video>
	</view>
</template>

<script>
	const util = require('@/utils/utils.js')
	export default {
		name: "open-media",
		props: {
			list: {
				type: Array,
				default: []
			},
		},
		data() {
			return {
				isOpenVideo: false,
				videoContext: null
			};
		},
		methods: {
			openMedia() {
				if (this.list[0].indexOf('.mp4') > 0) {
					//打开视频(全屏播放)
					this.isOpenVideo = true
					this.videoContext = uni.createVideoContext('myVideo', this)
					this.videoContext.play()
					this.videoContext.requestFullScreen()
				} else {
					//打开图片
					util.previewImage(this.list)
				}
			},
			//退出全屏时停止播放
			fullscreenchange(e) {
				console.log(e)
				if (!e.detail.fullScreen) {
					this.videoContext.stop()
					this.isOpenVideo = false
				}
			}
		}
	}
</script>

<style lang="scss">
	.button {
		width: 230rpx;
		text-align: center;
		padding: 10rpx 20rpx;
		border: 1px solid #000741;
		border-radius: 50rpx;
		margin-top: 15rpx;
	}
</style>

utils.js

/**
 * 预览图片
 * @param {Array} filePath
 */
function previewImage(filePath) {
	uni.previewImage({
		urls: filePath,
		longPressActions: {
			itemList: ['发送给朋友', '保存图片', '收藏'],
			success: res => {
				console.log('选中了第' + (res.tapIndex + 1) + '个按钮,第' + (res.index + 1) +
					'张图片')
			},
			fail: err => {
				console.log(err.errMsg)
			}
		}
	})
}

module.exports = {
	previewImage,
};

欢迎交流~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值