harmony 鸿蒙使用MovingPhotoView播放动态照片
使用MovingPhotoView播放动态照片
系统提供了MovingPhotoView组件,在一些社交类、图库类应用中,可用于播放动态照片文件。
约束与限制
针对MovingPhotoView组件的使用,有以下约束与限制:
- 当前不支持动态属性设置。
- 当前不支持设置ArkUI通用属性expandSafeArea。
- 该组件长按触发播放时组件区域放大为1.1倍。
- 该组件使用AVPlayer进行播放,同时开启的AVPlayer个数不建议超过3个,超过3个可能会出现视频播放卡顿现象。
开发步骤
- 导入动态照片模块。
import { MovingPhotoView, MovingPhotoViewController, MovingPhotoViewAttribute } from '@kit.MediaLibraryKit';
- 获取动态照片对象(MovingPhoto)。
MovingPhoto对象需要通过photoAccessHelper接口创建或获取,MovingPhotoView只接收构造完成的MovingPhoto对象。
创建、获取的方式可参考访问和管理动态照片资源。
src: photoAccessHelper.MovingPhoto|undefined = undefined;
- 创建动态照片控制器(MovingPhotoViewController),用于控制动态照片的播放状态(如播放、停止)。
controller: MovingPhotoViewController = new MovingPhotoViewController();
- 创建动态照片组件。
以下参数取值仅为举例,具体每个属性的取值范围,可参考API文档:@ohos.multimedia.movingphotoview。
import { photoAccessHelper, MovingPhotoView, MovingPhotoViewController, MovingPhotoViewAttribute } from '@kit.MediaLibraryKit';
@Entry
@Component
struct Index {
@State src: photoAccessHelper.MovingPhoto|undefined = undefined
@State isMuted: boolean = false
controller: MovingPhotoViewController = new MovingPhotoViewController();
build() {
Column() {
MovingPhotoView({
movingPhoto: this.src,
controller: this.controller
// imageAIOptions: this.options.
})
// 是否静音播放,此处由按钮控制,默认值为false非静音播放。
.muted(this.isMuted)
// 视频显示模式,默认值为Cover。
.objectFit(ImageFit.Cover)
// 播放时触发。
.onStart(() => {
console.log('onStart');
})
// 播放结束触发。
.onFinish(() => {
console.log('onFinish');
})
// 播放停止触发。
.onStop(() => {
console.log('onStop')
})
// 出现错误触发。
.onError(() => {
console.log('onError');
})
Row() {
// 按钮:开始播放。
Button('start')
.onClick(() => {
this.controller.startPlayback()
})
.margin(5)
// 按钮:停止播放。
Button('stop')
.onClick(() => {
this.controller.stopPlayback()
})
.margin(5)
// 按钮:是否静音播放。
Button('mute')
.onClick(() => {
this.isMuted = !this.isMuted
})
.margin(5)
}
.alignItems(VerticalAlign.Center)
.justifyContent(FlexAlign.Center)
.height('15%')
}
}
}
效果展示
你可能感兴趣的鸿蒙文章
harmony 鸿蒙Media Library Kit(媒体文件管理服务)
0
赞
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦