Ich versuche, die Größe eines Android VideoView dynamisch festzulegen. Ich habe sowohl StackOverflow als auch das Internet angeschaut. und die beste Lösung, die ich fand, war von here. Ich habe meine Implementierung unten gesetzt:Resize VideoView
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...");
}
}
Das Video passt korrekt auf dem Android-Emulator sowie auf einem Motorola Droid X; Bei einem Motorola Droid ändert sich die Größe des VideoView, aber das Video, das in der Videoansicht abgespielt wird, wird nicht skaliert. Wenn das VideoView auf dem Motorola Droid auf eine größere Dimension als das wiedergegebene Video eingestellt ist, wird in der Videoansicht ein schwarzer Hintergrund angezeigt, wobei das Video in der oberen linken Ecke des VideoView über dem schwarzen Hintergrund wiedergegeben wird.
Wie passt man eine VideoView in Android richtig an?
Danke, Vance
Ich teste es. Aber es beschneidet das Video anstatt die Größe zu ändern! Hast du irgendeine Idee? – boomz
@boomz Ich habe letzten Sommer eine Implementierung erstellt. Sehen Sie sich die Klasse [VideoPlayer] (https://github.com/Vance-Turner/appinventor-sources/blob/master/appinventor/components/src/com/google/appinventor/components/runtime/VideoPlayer.java) an aus dem App Inventor-Projekt (der Größenänderungscode war letzten Sommer meine Arbeit). –