Итак, я расширил 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, установленной в центре.