Saya mencoba mengatur ukuran VideoView Android secara dinamis. Saya telah mencari di StackOverflow dan juga internet; dan solusi terbaik yang saya temukan adalah dari di sini. Saya telah meletakkan implementasi saya di bawah ini:
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...");
}
}
Video diubah ukurannya dengan benar di emulator Android dan juga di Motorola Droid X; namun pada Motorola Droid, VideoView diubah ukurannya tetapi video yang diputar di VideoView tidak diubah ukurannya. Di Motorola Droid, jika VideoView diatur ke dimensi yang lebih besar daripada pemutaran video, latar belakang hitam akan muncul di VideoView dengan video diputar di sudut kiri atas VideoView di atas latar belakang hitam.
Bagaimana cara mengubah ukuran VideoView dengan benar di Android?
Terima kasih, Vanes