接入保利威视demo
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import { DependScope, MutableObserver } from '@polyvharmony/media-player-sdk'
|
||||
import { PLVMPMediaViewModel } from '../../modules/media/viewmodel/PLVMPMediaViewModel'
|
||||
import { PLVMPMediaControllerViewModel } from '../../modules/mediacontroller/viewmodel/PLVMPMediaControllerViewModel'
|
||||
import { isLandscape } from '../../utils/PLVDisplayUtils'
|
||||
|
||||
@Component
|
||||
export struct PLVMediaPlayerSpeedTextView {
|
||||
@Consume dependScope: DependScope
|
||||
private mediaViewModel: PLVMPMediaViewModel = this.dependScope.get(PLVMPMediaViewModel)
|
||||
private controllerViewModel: PLVMPMediaControllerViewModel = this.dependScope.get(PLVMPMediaControllerViewModel)
|
||||
@State isVisible: boolean = false
|
||||
@State currentSpeed: number = 1.0
|
||||
private observers: MutableObserver[] = []
|
||||
|
||||
aboutToAppear(): void {
|
||||
this.mediaViewModel.mediaPlayViewState.observe((viewState) => {
|
||||
this.currentSpeed = viewState.speed
|
||||
}).pushTo(this.observers)
|
||||
|
||||
this.controllerViewModel.mediaControllerViewState.observe((viewState) => {
|
||||
this.isVisible = viewState.controllerVisible
|
||||
&& !viewState.isMediaStopOverlayVisible()
|
||||
&& !viewState.progressSliderDragging
|
||||
&& !viewState.controllerLocking
|
||||
&& !(viewState.isFloatActionLayoutVisible() && isLandscape())
|
||||
}).pushTo(this.observers)
|
||||
}
|
||||
|
||||
build() {
|
||||
Text(`${this.currentSpeed.toFixed(1)}x`)
|
||||
.fontSize(14)
|
||||
.fontColor('#FFFFFF')
|
||||
.visibility(this.isVisible ? Visibility.Visible : Visibility.None)
|
||||
.onClick(() => {
|
||||
this.controllerViewModel.pushFloatActionLayout('speed')
|
||||
})
|
||||
}
|
||||
|
||||
aboutToDisappear(): void {
|
||||
MutableObserver.disposeAll(this.observers)
|
||||
this.observers = []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user