ExoPlayer 调整大小仅在第一次调用时有效

ExoPlayer resize works only first time its called

如上所述,我在更改 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 仅在第一次调用时可见。 还有其他方法吗?或者强制视图重新渲染?

提前致谢!

您可以通过 exoplayer.videoFormat.widthexoplayer.videoFormat.height 访问您的视频的大小,这样每当您的视频开始播放时,您就可以启动您的功能来计算比率并执行您的操作