Я пытаюсь динамически установить размер 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; но на Motorola Droid размер VideoView изменяется, но размер видео, воспроизводимого в VideoView, не изменяется. На Motorola Droid, если для параметра VideoView установлено значение, превышающее размер воспроизводимого видео, в окне VideoView появляется черный фон, а видео воспроизводится в верхнем левом углу окна VideoView поверх черного фона.
Как правильно изменить размер VideoView в Android?
Спасибо, Vance