我已经扩展了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的gravity属性设置为center。