所以我扩展了 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 的相对布局,其中 VideoView 的重力设置为中心。