1 Star 0 Fork 232

kukixi / Cases

forked from HarmonyOS-Cases / Cases 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 3.24 KB
一键复制 编辑 原始数据 按行查看 历史
haokunZhu 提交于 2024-02-22 09:50 . modify url

视频全屏切换案例

介绍

本示例介绍了Video组件和@ohos.window接口实现媒体全屏的功能。 该场景多用于首页瀑布流媒体播放等。

效果图预览

使用说明

  • 点击全屏按钮,横屏媒体窗口。
  • 点击恢复窗口按钮,恢复媒体窗口。

实现步骤

  1. 在Video组件内调用 onFullscreenChange 方法,实现媒体全屏效果。
    Video({
        src: $rawfile(this.moment.media),
        previewUri: $r(`app.media.${this.moment.mediaPreview}`)
      })
        .width($r('app.integer.friendMomentsPage_single_video_width'))
        .height($r('app.integer.friendMomentsPage_single_video_height'))
        .objectFit(ImageFit.Contain)
        .onFullscreenChange(() => {
          // 横竖屏切换
          this.windowChange(this.isFullscreen);
        })
  2. 调用@ohos.window的 getLastWindow 方法获取当前应用内最上层的子窗口,若无应用子窗口,则返回应用主窗口。
  3. 利用获取到的窗口对象,调用 setWindowSystemBarEnable 方法设置窗口是否显示导航栏和状态栏。
  4. 调用窗口对象的 setPreferredOrientation 方法设置窗口旋转方向以及是否应用重力感应。
    window.getLastWindow(getContext(), (err: BusinessError, data) => {
      const errCode = err.code;
      if (errCode) {
        return;
      }
      // 设置窗口是否显示导航栏和状态栏
      data.setWindowSystemBarEnable(WINDOW_SYSTEM_BAR);
      // 设置窗口旋转方向以及是否应用重力感应
      data.setPreferredOrientation(window.Orientation.PORTRAIT);
      })

高性能知识点

  1. 本示例使用了LazyForEach 进行数据懒加载优化,以降低内存占用和渲染开销。
  2. 本示例使用了@Reusable复用组件优化,提升应用性能。

工程结构&模块类型

mediafullscreen                                    // har
|---model                                         
|   |---BasicDataSource.ets                        // 数据类型文件
|---view
|   |---MediaFullscreen.ets                        // 媒体全屏实现页面

模块依赖

不涉及

参考资料

Video

@ohos.window

LazyForEach

@Reusable

JavaScript
1
https://gitee.com/kukixi/cases.git
git@gitee.com:kukixi/cases.git
kukixi
cases
Cases
master

搜索帮助