Сначала создайте относительный макет с помощью Gravity.CENTER и прикрепите к нему свой вид поверхности. Это обеспечит центрирование видео внутри экрана.
Также, если вы используете занятие, используйте «черную» тему, чтобы избежать градиента
В вашем SurfaceView создайте прослушиватель:
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setOnVideoSizeChangedListener (mOnVideoSizeChangedListener);
...
MediaPlayer.OnVideoSizeChangedListener mOnVideoSizeChangedListener = new MediaPlayer.OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
setFitToFillAspectRatio(mp, width, height);
}
};
...
Наконец, метод соответствия для заполнения в вашем SurfaceView. Это будет работать на пейзаж и портрет
private void setFitToFillAspectRatio(MediaPlayer mp, int videoWidth, int videoHeight)
{
if(mp != null)
{
Integer screenWidth = ((Activity) mContext).getWindowManager().getDefaultDisplay().getWidth();
Integer screenHeight = ((Activity) mContext).getWindowManager().getDefaultDisplay().getHeight();
android.view.ViewGroup.LayoutParams videoParams = getLayoutParams();
if (videoWidth > videoHeight)
{
videoParams.width = screenWidth;
videoParams.height = screenWidth * videoHeight / videoWidth;
}
else
{
videoParams.width = screenHeight * videoWidth / videoHeight;
videoParams.height = screenHeight;
}
setLayoutParams(videoParams);
}
}