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