Изменение размера ExoPlayer работает только при первом вызове - PullRequest
0 голосов
/ 26 мая 2020

Как упоминалось выше, у меня проблема с изменением режима изменения размера на моем ExoPlayer. Я воспроизводю список видео, которые меняются при прокрутке, и в зависимости от ориентации экрана я пытаюсь увеличить масштаб видео, если оно близко к экрану AspectRatio, блок кода, который обрабатывает:

  override fun onVideoSizeChanged(width: Int, height: Int, unappliedRotationDegrees: Int, pixelWidthHeightRatio: Float) {
    super.onVideoSizeChanged(width, height, unappliedRotationDegrees, pixelWidthHeightRatio)
    val displayMetrics = DisplayMetrics()
    (context as Activity).windowManager.defaultDisplay.getMetrics(displayMetrics)

    val displayAspectRatio = displayMetrics.widthPixels.toFloat() / displayMetrics.heightPixels
    val videoAspectRatio = width.toFloat() / height

    if (abs(videoAspectRatio - displayAspectRatio) < 0.2) {
      exoPlayerView.resizeMode = AspectRatioFrameLayout.RESIZE_MODE_ZOOM
      selectedPlayer?.videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING
    } else {
      exoPlayerView.resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FIT
      selectedPlayer?.videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT
    }

  }

Но exoPlayerView.resizeMode виден только при первом вызове. Есть другой способ сделать это? Или, может быть, принудительно выполнить повторный рендеринг вида?

Заранее спасибо!

1 Ответ

0 голосов
/ 11 июля 2020

Вы можете получить доступ к размеру вашего видео с помощью: exoplayer.videoFormat.width и exoplayer.videoFormat.height, так что всякий раз, когда ваше видео запускается, вы запускаете свою функцию, чтобы вычислить соотношение и делать свои вещи

...