我想动态设置Android VideoView的大小。我在StackOverflow和互联网上查找了很多,最好的解决方案是来自这里。我将我的实现放在下面:
public class ResizableVideoView extends VideoView {
public ResizableVideoView(Context c) {
super(c);
}
private int mVideoWidth = 100;
private int mVideoHeight = 100;
public void changeVideoSize(int width, int height) {
mVideoWidth = width;
mVideoHeight = height;
// not sure whether it is useful or not but safe to do so
getHolder().setFixedSize(width, height);
forceLayout();
invalidate(); // very important, so that onMeasure will be triggered
}
public void onMeasure(int specwidth, int specheight) {
Log.i("onMeasure","On Measure has been called");
setMeasuredDimension(mVideoWidth, mVideoHeight);
}
public void onDraw(Canvas c) {
super.onDraw(c);
Log.i("onDraw","Drawing...");
}
}
在Android模拟器以及摩托罗拉Droid X上,视频大小调整正确;但是在摩托罗拉Droid上,VideoView会调整大小,但是在VideoView中播放的视频不会调整大小。在摩托罗拉Droid上,如果将VideoView设置为比视频播放更大的尺寸,则VideoView中会出现黑色背景,并且视频播放在黑色背景的左上角。
如何在Android中正确调整VideoView的大小?
谢谢, Vance