Как изменить параметры макета VideoView Exoplayer во время выполнения? - PullRequest
0 голосов
/ 07 ноября 2019

Я создаю простой видеоплеер для своего приложения. Я использую Exoplayer

<com.google.android.exoplayer2.ui.PlayerView
            ..... />

Я хочу дать это представление layoutParams во время выполнения. Я даю эти параметры как

private void resizeVideo() {
        ISize videoSize = new SizeFromVideoFile(String.valueOf(currentPlayingVideoUri));
        Point point = new Point();
        getWindow().getWindowManager().getDefaultDisplay().getSize(point);
        ViewGroup.LayoutParams layoutParams = playerView.getVideoSurfaceView().getLayoutParams();
        if (getSizeCounter() == 1) {
            //100 %
            layoutParams.height = videoSize.height();
            layoutParams.width = videoSize.width();

        } else if (getSizeCounter() == 2) {
            // 150%
            if (!(videoSize.width() > point.x)) {
                layoutParams.height = (int) (((videoSize.width() * 1.5f)) * videoSize.height() / videoSize.width());
                layoutParams.width = (int) (videoSize.width() * 1.5f);
            } else {
                layoutParams.height = videoSize.height();
                layoutParams.width =videoSize.width();
            }
        } else if (getSizeCounter() == 3) {
            // fit to screen
            layoutParams.height = ((point.x) * videoSize.height()) / videoSize.width();
            layoutParams.width = point.x;
        }
        playerView.getVideoSurfaceView().setLayoutParams(layoutParams);
        sizeCounter++;
    }

Проблема в том, что, когда я изменяю размер этого вида поверхности этого видео-представления, я получаю нечто подобное

100% enter image description here

150% enter image description here

По размеру экрана enter image description here

пробовал гравитацию, layout_gravity и т. Д. Этого представления и его родителей, но это не сработало.

я хочу, чтобы видеобыть в центре экрана.

...