harmony 鸿蒙使用MovingPhotoView播放动态照片

  • 2025-06-12
  • 浏览 (4)

使用MovingPhotoView播放动态照片

系统提供了MovingPhotoView组件,在一些社交类、图库类应用中,可用于播放动态照片文件。

约束与限制

针对MovingPhotoView组件的使用,有以下约束与限制:

  • 当前不支持动态属性设置。
  • 当前不支持设置ArkUI通用属性expandSafeArea
  • 该组件长按触发播放时组件区域放大为1.1倍。
  • 该组件使用AVPlayer进行播放,同时开启的AVPlayer个数不建议超过3个,超过3个可能会出现视频播放卡顿现象。

开发步骤

  1. 导入动态照片模块。
   import { MovingPhotoView, MovingPhotoViewController, MovingPhotoViewAttribute } from '@kit.MediaLibraryKit';
  1. 获取动态照片对象(MovingPhoto)。

MovingPhoto对象需要通过photoAccessHelper接口创建或获取,MovingPhotoView只接收构造完成的MovingPhoto对象。

创建、获取的方式可参考访问和管理动态照片资源

   src: photoAccessHelper.MovingPhoto|undefined = undefined;
  1. 创建动态照片控制器(MovingPhotoViewController),用于控制动态照片的播放状态(如播放、停止)。
   controller: MovingPhotoViewController = new MovingPhotoViewController();
  1. 创建动态照片组件。

以下参数取值仅为举例,具体每个属性的取值范围,可参考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(媒体文件管理服务)

harmony 鸿蒙访问和管理动态照片资源

harmony 鸿蒙媒体资源变更通知相关指导

harmony 鸿蒙Media Library Kit 简介

harmony 鸿蒙使用Picker选择媒体库资源

harmony 鸿蒙开发准备

harmony 鸿蒙媒体资源使用指导

harmony 鸿蒙保存媒体库资源

harmony 鸿蒙系统相册资源使用指导

harmony 鸿蒙用户相册资源使用指导

0  赞