Итак, я расширил VideoView onMeasure, чтобы увеличить видео, чтобы оно соответствовало полноэкранному просмотру.
вот как:
public void setVideoAspect(int w,int h){
wVideo=w;
hVideo=h;
onMeasure(w, h);
}
@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if(wVideo!=0 && hVideo!=0)
setMeasuredDimension(wVideo,hVideo);
}
Я вызываю setVideoAspect() с показателями отображения (ширина, высота) экрана. Проблема заключается в том, что этот метод растягивает видео, чтобы он находился внутри экрана. Я хочу удержать соотношение сторон. (У меня 4: 3 видео и размер экрана 3: 2). Я использовал следующий код, чтобы дать измерения сохраненного отношения к виду:
int height = (int) (metrics.widthPixels*3/(float)4);
int width= metrics.widthPixels;
mVideoView.setVideoAspect(width,height);
Итак, это делает работу, но есть проблема: она дает мне 4: 3 видео с шириной экрана и правильно масштабирует высоту, но оно не центрирует видео. (Он просто обрезает нижнюю часть видео, а не верх и низ одинаково.) У меня есть относительный макет, содержащий VideoView, с гравитацией видеообзора, установленным в центр.