Vue:uni-app学习(五)--媒体组件(图片、视频)

 一、图片展示

<template>
    <view>
        <page-head :title="title"></page-head>
        <view class="uni-padding-wrap uni-common-mt">
            <view class="uni-title">
                示例1 <text>\n本地图片</text>
            </view>
            <view class="uni-center" style="background:#FFFFFF; font-size:0;">
                <!-- #ifdef MP-ALIPAY -->
                <image class="image" mode="widthFix" src="../../../static/logo.png" />
                <!-- #endif -->
                <!-- #ifndef MP-ALIPAY -->
                <image class="image" mode="widthFix" src="../../../static/logo.png" />
                <!-- #endif -->
            </view>
            <view class="uni-title uni-common-mt">
                示例2 <text>\n网络图片</text>
            </view>
            <view class="uni-center" style="background:#FFFFFF; font-size:0;">
                <image class="image" mode="widthFix" src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/uni@2x.png" />
            </view>
        </view>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                title: 'image'
            }
        }
    }
</script>
<style>
    .image {
        margin:40rpx 0;
        width: 200rpx;
    }
</style>

图片展示模式:

scaleToFill:不保持纵横比缩放图片,使图片完全适应

aspectFit:保持纵横比缩放图片,使图片的长边能完全显示出来

aspectFill:保持纵横比缩放图片,只保证图片的短边能完全显示出来

top:不缩放图片,只显示图片的顶部区域

bottom:不缩放图片,只显示图片的底部区域

center:不缩放图片,只显示图片的中间区域

left:不缩放图片,只显示图片的左边区域

right:不缩放图片,只显示图片的右边边区域

top left:不缩放图片,只显示图片的左上边区域

top right:不缩放图片,只显示图片的右上边区域

bottom left:不缩放图片,只显示图片的左下边区域

bottom right:不缩放图片,只显示图片的右下边区域

 

二、视频展示

<template>
    <view>
    
        <view>
            <page-head :title="title"></page-head>
            <view class="uni-padding-wrap uni-common-mt" v-if="showVideo">
                <view>
                    <video id="myVideo" src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20181126-lite.m4v"
                     @error="videoErrorCallback" :danmu-list="danmuList" enable-danmu danmu-btn controls poster="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/poster.png"></video>
                </view>
                <!-- #ifndef MP-ALIPAY || MP-TOUTIAO -->
                <view class="uni-list uni-common-mt">
                    <view class="uni-list-cell">
                        <view>
                            <view class="uni-label">弹幕内容</view>
                        </view>
                        <view class="uni-list-cell-db">
                            <input v-model="danmuValue" class="uni-input" type="text" placeholder="在此处输入弹幕内容" />
                        </view>
                    </view>
                </view>
                <view class="uni-btn-v">
                    <button @click="sendDanmu" class="page-body-button">发送弹幕</button>
                </view>
                <!-- #endif -->
            </view>
        </view>
        </view>
    </view>
    
</template>
<script>
    export default {
        data() {
            return {
                title: 'video',
                src: '',
                danmuList: [{
                        text: '第 1s 出现的弹幕',
                        color: '#ff0000',
                        time: 1
                    },
                    {
                        text: '第 3s 出现的弹幕',
                        color: '#ff00ff',
                        time: 3
                    }
                ],
                danmuValue: '',
                showVideo: false
            }
        },
        onReady: function(res) {
            // #ifndef MP-ALIPAY || MP-TOUTIAO
            this.videoContext = uni.createVideoContext('myVideo')
            // #endif
      // #ifdef APP-PLUS || MP-BAIDU
      setTimeout(()=>{
          this.showVideo = true
      },350)
      // #endif
      // #ifndef APP-PLUS || MP-BAIDU
      this.showVideo = true
      // #endif
        },
        methods: {
            sendDanmu: function() {
                this.videoContext.sendDanmu({
                    text: this.danmuValue,
                    color: this.getRandomColor()
                });
                this.danmuValue = '';
            },
            videoErrorCallback: function(e) {
                uni.showModal({
                    content: e.target.errMsg,
                    showCancel: false
                })
            },
            getRandomColor: function() {
                const rgb = []
                for (let i = 0; i < 3; ++i) {
                    let color = Math.floor(Math.random() * 256).toString(16)
                    color = color.length == 1 ? '0' + color : color
                    rgb.push(color)
                }
                return '#' + rgb.join('')
            }
        }
    }
</script>

<style>
    video {
        width: 690rpx;
    }
</style>

 

posted @ 2020-08-11 21:49  wukong1688  阅读(215)  评论(0编辑  收藏  举报