我正在尝试动态设置 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 模拟器和 Motorola Droid X 上正确调整大小;但在摩托罗拉 Droid 上,VideoView 会调整大小,但 VideoView 中播放的视频不会调整大小。在 Motorola Droid 上,如果 VideoView 设置为比播放视频更大的尺寸,VideoView 中会出现黑色背景,而在黑色背景之上,VideoView 左上角正在播放视频。
如何在 Android 中正确调整 VideoView 的大小?
谢谢,万斯