这几天遇到一个问题:
视频播放时,为了保持视频的宽高比,就需要在surfaceView的父view的大小改变的时候,改变SurfaceView的大小。
父View的大小改变的时候,会走View的onSizeChanged回调。所以,复写了这个方法:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
Log.d(TAG, "onSizeChanged w = " + w + " , h = " + h + " , oldw = " + oldw + " , oldh = " + oldh);
//当界面大小有变化的时候,需要改变surfaceView的大小。
resizeSurfaceView();
}
private void resizeSurfaceView()
{
int width = mediaPlayer.getVideoWidth();
int height = mediaPlayer.getVideoHeight();
//根据视频宽高和父View的宽高计算SurfaceView的宽高
Point surfaceViewSize = measureSurfaceViewSize(width, height);
RelativeLayout.LayoutParams surfaceLayoutParams