HarmonyOS 鸿蒙Next Video组件可以控制controls自定义吗?自带的组件有缺陷

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Video组件可以控制controls自定义吗?自带的组件有缺陷

Video组件可以控制controls自定义吗?自带的组件有缺陷

2 回复

可以参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-common-components-video-player-V5#video%E6%8E%A7%E5%88%B6%E5%99%A8%E4%BD%BF%E7%94%A8

通过设置属性controls为false关闭默认控制栏

设置Video组件的controller

通过ArkTS实现自定义的控制栏,并通VideoController控制视频播放

demo如下:

[@Entry](/user/Entry)

[@Component](/user/Component)

struct VideoCreateComponent {

 [@State](/user/State) videoSrc: Resource = $rawfile('videoTest.mp4')

 [@State](/user/State) previewUri: Resource = $r('app.media.video_ad3')

 [@State](/user/State) curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X

 [@State](/user/State) isAutoPlay: boolean = false

 [@State](/user/State) showControls: boolean = true

 controller: VideoController = new VideoController()

 build() {

   Column() {

     Video({

       src: this.videoSrc,

       previewUri: this.previewUri,

       currentProgressRate: this.curRate,

       controller: this.controller

     }).width('100%').height(600)

       .autoPlay(this.isAutoPlay)

       .controls(this.showControls)

       .onStart(() => {

         console.info('onStart')

       })

       .onPause(() => {

         console.info('onPause')

       })

       .onFinish(() => {

         console.info('onFinish')

       })

       .onError(() => {

         console.info('onError')

       })

       .onPrepared((e) => {

         console.info('onPrepared is ' + e.duration)

       })

       .onSeeking((e) => {

         console.info('onSeeking is ' + e.time)

       })

       .onSeeked((e) => {

         console.info('onSeeked is ' + e.time)

       })

       .onUpdate((e) => {

         console.info('onUpdate is ' + e.time)

       })

     Row() {

       Button('src').onClick(() => {

         this.videoSrc = $rawfile('videoTest.mp4') // 切换视频源

       }).margin(5)

       Button('previewUri').onClick(() => {

         this.previewUri = $r('app.media.video_ad3') // 切换视频预览海报

       }).margin(5)

       Button('controls').onClick(() => {

         this.showControls = !this.showControls // 切换是否显示视频控制栏

       }).margin(5)

     }

     Row() {

       Button('start').onClick(() => {

         this.controller.start() // 开始播放

       }).margin(5)

       Button('pause').onClick(() => {

         this.controller.pause() // 暂停播放

       }).margin(5)

       Button('stop').onClick(() => {

         this.controller.stop() // 结束播放

       }).margin(5)

       Button('setTime').onClick(() => {

         this.controller.setCurrentTime(10, SeekMode.Accurate) // 精准跳转到视频的10s位置

       }).margin(5)

     }

     Row() {

       Button('rate 0.75').onClick(() => {

         this.curRate = PlaybackSpeed.Speed_Forward_0_75_X // 0.75倍速播放

       }).margin(5)

       Button('rate 1').onClick(() => {

         this.curRate = PlaybackSpeed.Speed_Forward_1_00_X // 原倍速播放

       }).margin(5)

       Button('rate 2').onClick(() => {

         this.curRate = PlaybackSpeed.Speed_Forward_2_00_X // 2倍速播放

       }).margin(5)

     }

   }

 }}

可使用avplayer:参考

1、音频录制-Audio Kit(音频服务)-媒体 - 华为HarmonyOS开发者

2、 https://gitee.com/harmonyos_codelabs/VideoPlayer

更多关于HarmonyOS 鸿蒙Next Video组件可以控制controls自定义吗?自带的组件有缺陷的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next Video组件可以控制controls自定义

在HarmonyOS系统中,Next Video组件确实支持对controls(控件)进行自定义。开发者可以根据实际需求,对播放控件的外观和功能进行调整,以满足特定的应用场景。自带的组件可能存在一些通用的功能和样式,但往往无法完全满足所有应用的个性化需求。

为了实现自定义controls,开发者需要深入了解Next Video组件的API和相关的开发文档。通过API,可以获取到视频控件的各个元素,如播放按钮、进度条、音量控制等,并对其进行样式和功能的修改。例如,可以修改播放按钮的图标、颜色,或者调整进度条的样式和精度等。

此外,如果自带的组件存在某些缺陷或不符合预期,开发者还可以通过自定义控件的方式,完全替代这些缺陷组件,以确保应用的用户体验和功能性。

请注意,自定义controls需要一定的开发经验和技能,同时需要对HarmonyOS系统的开发框架和组件库有深入的了解。如果开发者在自定义过程中遇到问题,可以参考官方文档或社区资源,以获取更详细的解决方案。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部