Итак, я расширил onMeasure от VideoView, чтобы увеличить его до полноэкранного режима.
вот как:
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 с гравитацией VideoView, установленной в центр.