PlayerUIComponent.ets 2.93 KB
import { WindowModel } from 'wdKit';
import { WDAliPlayerController } from 'wdPlayer/Index';
import { PlayerCommentComponent } from './PlayerCommentComponent';
import { PlayerTitleComponent } from './PlayerTitleComponent';
import { PlayerVideoControlComponent } from './PlayerVideoControlComponent';
import { window } from '@kit.ArkUI';
import { DisplayDirection } from 'wdConstant';

/**
 * 沉浸直播  --- 横滑展示组件
 */
@Component
export struct PlayerUIComponent {
  private playerController?: WDAliPlayerController
  @Provide isSmall:boolean = false
  @Consume isShowControl: boolean
  @Consume isFullScreen: boolean
  @Consume displayDirection: DisplayDirection
  aboutToAppear() {
    if (!this.playerController) {
      return
    }
    this.playerController.onVideoSizePlayerUIComponentMethod = (width: number, height: number) => {
      if (width > height){
        this.isSmall = true
      } else {
        this.isSmall = false
      }
    }
  }
  @Builder
  fullScreen() {
    //全屏按钮
    Image($r('app.media.icon_live_player_full_screen'))
      .height(32)
      .width(32)
      .padding(5)
      .borderRadius($r('app.float.vp_16'))
      .border({width:0.5})
      .borderColor(0x4DFFFFFF)
      .backgroundColor(0x4D222222)
      .margin({right:10})
      .onClick(() => {
        WindowModel.shared.setSpecificSystemBarEnabled(false)
        this.displayDirection = DisplayDirection.VIDEO_HORIZONTAL
        WindowModel.shared.setPreferredOrientation(
          window.Orientation.LANDSCAPE)
        if(this.playerController){
          // if(this.playerController.onVideoSizePlayerUIComponentMethod){
          //   this.playerController.onVideoSizePlayerUIComponentMethod(1,2)
          // }
          if(this.playerController.onVideoSizePlayerComponentBack){
            this.playerController.onVideoSizePlayerComponentBack(1,2)
          }

          if(this.playerController.onVideoSizePlayerTitleComponentBack){
            this.playerController.onVideoSizePlayerTitleComponentBack(1,2)
          }
        }
        this.isFullScreen = true
      })
      .visibility(this.isSmall ? Visibility.Visible : Visibility.Hidden)
      .margin({ top:  301}) // 195 + 211 - 105
      .position({ x: '96.8%' })
      .markAnchor({ x: '96.8%' })
  }
  build() {
    Stack() {
      //  标题
      PlayerTitleComponent({ playerController: this.playerController })

      PlayerCommentComponent()
        .visibility(this.isShowControl ? Visibility.Hidden : Visibility.Visible)
        .animation({ duration: 500 })
        .position({ y: '100%' })
        .markAnchor({ y: '100%' })

      PlayerVideoControlComponent({ playerController: this.playerController })
        .visibility(this.isShowControl ? Visibility.Visible : Visibility.Hidden)
        .animation({ duration: 500 })
        .position({ y: '100%' })
        .markAnchor({ y: '100%' })

      this.fullScreen()
    }
    .height('100%')
    .width('100%')
    .alignContent(Alignment.TopStart)

  }
}