Android VideoView のサイズを動的に設定しようとしています。インターネットだけでなく StackOverflow も調べました。私が見つけた最良の解決策はhereからでした。実装を以下に示します。
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 で正しくサイズ変更されます。ただし、Motorola Droid では、VideoView のサイズは変更されますが、VideoView で再生中のビデオのサイズは変更されません。Motorola Droid では、VideoView が再生中のビデオよりも大きいサイズに設定されている場合、VideoView に黒い背景が表示され、黒い背景の上にある VideoView の左上隅にビデオが再生されます。
AndroidでVideoViewのサイズを適切に変更するにはどうすればよいですか?
ありがとう、ヴァンス