HarmonyOS 鸿蒙Next Video组件调用requestFullscreen实现全屏播放后,自定义的控制栏无法显示
HarmonyOS 鸿蒙Next Video组件调用requestFullscreen实现全屏播放后,自定义的控制栏无法显示
1、使用Video加载视频,并设置controls为false,onFullscreenChange监听里进行横竖屏切换
2、自定义控制栏,点击按钮调用this.controller.requestFullscreen(true)
3.视频成功全屏,但自定义控制栏未显示
Video组件全屏的原理是,新建一个Video节点,设置为窗口大小,放置到根节点,复用原来Video的surface。这可以通过ide的ArkUI Inspector观察Video组件全屏前后页面节点的变化发现,这个原理在ets侧是不能模仿实现的。总的来说Video组件自带的全屏就不适用了。需要自定义实现全屏。
我们可以给视频展示区一个高度,通过调整尺寸实现全屏的效果,同时也可以显示自定义的播放控件,这边给您提供一个demo,供您参考:
@Entry
@Component
struct VideoPlayerPage {
  @State videoSrc: Resource = $r("app.media.videoTest")
  @State previewUri: Resource = $r('app.media.background');
  controller: VideoController = new VideoController();
  @State curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X
  @State fullHeight: Length = 600
  @State isFullScreen: boolean = false
  build() {
    Column() {
      Stack({ alignContent: Alignment.Bottom }) {
        Video({ src: this.videoSrc, previewUri: this.previewUri, controller: this.controller })
          .width('100%')
          .height(this.fullHeight)
          .loop(false)
          .objectFit(ImageFit.Contain)
          .autoPlay(false)
          .controls(false)
        // 自定义控制器
        Row() {
          Text('start')
            .onClick(() => {
              this.controller.start() // 开始播放
            })
            .margin(5)
            .fontColor(Color.White)
          Text('pause')
            .onClick(() => {
              this.controller.pause() // 暂停播放
            }).margin(5)
            .fontColor(Color.White)
          Text('0.75')
            .onClick(() => {
              this.curRate = PlaybackSpeed.Speed_Forward_0_75_X // 0.75倍速播放
            })
            .margin(5)
            .fontColor(Color.White)
          Text('1')
            .onClick(() => {
              this.curRate = PlaybackSpeed.Speed_Forward_1_00_X // 原倍速播放
            })
            .margin(5)
            .fontColor(Color.White)
          Text('2')
            .onClick(() => {
              this.curRate = PlaybackSpeed.Speed_Forward_2_00_X // 2倍速播放
            })
            .margin(5)
            .fontColor(Color.White)
          Text(this.isFullScreen ? '退出全屏' : '全屏')
            .onClick(() => {
              if (this.isFullScreen) {
                this.fullHeight = 600
              } else {
                this.fullHeight = '100%'
              }
              this.isFullScreen = !this.isFullScreen
            })
            .fontColor(Color.White)
        }
        .zIndex(1)
      }
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }
}
更多关于HarmonyOS 鸿蒙Next Video组件调用requestFullscreen实现全屏播放后,自定义的控制栏无法显示的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,使用Next Video组件调用requestFullscreen方法实现全屏播放后,自定义控制栏无法显示的问题,通常是由于全屏模式下视图层级或焦点管理变化导致的。以下是可能的原因及解决思路:
- 
视图层级调整:在全屏模式下,视频组件可能会覆盖或改变原有的视图层级,导致自定义控制栏被遮挡或不在可见区域内。检查并调整视图层级,确保控制栏在全屏模式下仍位于视频组件之上且可见。
 - 
焦点管理:全屏播放时,焦点可能完全转移到了视频组件上,导致自定义控制栏无法接收事件。尝试在全屏模式下通过编程方式设置控制栏的焦点或可见性。
 - 
全屏回调处理:监听全屏播放的回调事件,在进入或退出全屏状态时动态调整控制栏的显示状态。
 - 
样式与布局:检查控制栏的样式和布局设置,确保在全屏和非全屏模式下都能正确显示。
 - 
文档与示例:参考HarmonyOS官方文档和示例代码,了解全屏播放的最佳实践和控制栏的显示管理。
 
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html
        
      
                  
                  
                  
