OpenHarmony开发者论坛
标题:
如何自定义Video组件控制栏样式
[打印本页]
作者:
mean
时间:
2023-10-31 10:05
标题:
如何自定义Video组件控制栏样式
【问题描述】
Video组件默认的控制栏样式太丑了,看了文档,没看到可以自定义样式选项呀。
【运行环境】
硬件:RK3568
ROM版本:Openharmony 3.2 Beta5
DevEvoStudio版本:
SDK版本:API 9
作者:
westinyang
时间:
2023-10-31 11:14
[md]首先设置 .controls(false) 隐藏默认控制栏,定义 controller: VideoController = new VideoController(),在初始化Video组件的时候传递给controller属性,然后用ArkUI自定义一个控制栏布局,给自定义控制栏布局中的按钮添加相应的单击事件,分别调用this.controller.start()|pause()|stop()|requestFullscreen()...等接口控制视频组件
[/md]
作者:
清风明月
时间:
2023-11-9 09:38
1.通过设置属性controls为false关闭默认控制栏。
2.设置Video组件的controller。
3.通过ArkTS实现自定义的控制栏,并通过VideoController控制视频播放。
// xxx.ets
@Entry@Componentstruct VideoCreateComponent {
@State videoSrc: Resource = $rawfile('video1.mp4')
@State previewUri: Resource = $r('app.media.poster1')
@State curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X
@State isAutoPlay: boolean = false
@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('video2.mp4') // 切换视频源
}).margin(5)
Button('previewUri').onClick(() => {
this.previewUri = $r('app.media.poster2') // 切换视频预览海报
}).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)
}
}
}}
复制代码
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5