Как установить режим масштабирования для растяжения до полного экрана при использовании VideoFragment для воспроизведения видео на Leanback - PullRequest
0 голосов
/ 25 февраля 2019

Google Витрина Leanback Видеопроигрыватель без ExoPlayer

Google's Витрина Leanback Видеоплеер с ExoPlayer

Я опробовал витрину с отжимом отGoogle, и он также воспроизводит видео в режиме «по размеру экрана» с черными полосами по бокам.Я не могу найти вариант изменения режима масштабирования в документации по API либо

1 Ответ

0 голосов
/ 02 марта 2019

Мне пришлось поискать источник VideoFragment, чтобы понять это.VideoFragment имеет простой SurfaceView в качестве корневого элемента своего макета, и все, что вам нужно сделать, это заставить SurfaceView соответствовать родительской (то есть экрану устройства) ширине и высоте.Для этого просто переопределите onVideoSizeChanged и используйте getSurfaceView, чтобы получить ссылку на частный пакет SurfaceView, используемый в VideoFragment.

@Override
protected void onVideoSizeChanged(int width, int height) {
    switch (scaleMode) {
        //Flag indicates that this video should stretch to screen
        case MediaMetaData.SCALE_MODE_STRETCH:  
            View rootView = getView();
            SurfaceView surfaceView = getSurfaceView();
            ViewGroup.LayoutParams params = surfaceView.getLayoutParams();
            params.height = rootView.getHeight();
            params.width = rootView.getWidth();
            surfaceView.setLayoutParams(params);
            break;
        //When the video shouldn't stretch, just invoke super to have the VideoFragment's default behavior which is fit to screen
        default:                            
            super.onVideoSizeChanged(width, height);
    }
}
.
...