2012-06-14 24 views
8

Android VideoView'un boyutunu dinamik olarak ayarlamaya çalışıyorum. StackOverflow'un yanı sıra internete de baktım; ve bulduğum en iyi çözüm here idi. Aşağıda benim uygulanmasını koyduk:Görüntüyü Yeniden Boyutlandır

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 Android emülatörü yanı sıra Motorola Droid X üzerinde düzgün boyutlandırır; ama bir Motorola Droid'de, VideoView yeniden boyutlandırılıyor ancak VideoView'da oynatılan video yeniden boyutlandırmıyor. Motorola Droid'te, VideoView video oynatmadan daha büyük bir boyuta ayarlanmışsa, VideoView'da siyah arka planın üstünde VideoView'un sol üst köşesinde oynatılan video ile siyah bir arka plan belirir.

Android'de bir Video Görünümü nasıl düzgün şekilde yeniden boyutlandırılır? Vance

cevap

3

Benim uygulama aşağıdaki gibi çalışır

sayesinde:

RelativeLayout.LayoutParams videoviewlp = new RelativeLayout.LayoutParams(newwidth, newheight); 
    videoviewlp.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); 
    videoviewlp.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE); 
    videoview.setLayoutParams(videoviewlp); 
    videoview.invalidate(); 

videoview geçersiz ederek, yeni LayoutParams (ve yeni boyutlar) kullanılarak tüm videoview yeniden çizilmesi için zorlayacaktır.

+0

Bunu test ediyorum. ama yeniden boyutlandırmak yerine videoyu kırp! Herhangi bir fikrin var mı? – boomz

+1

@boomz Son olarak geçen yaz bir uygulama başlattım. [VideoPlayer] 'a (https://github.com/Vance-Turner/appinventor-sources/blob/master/appinventor/components/src/com/google/appinventor/components/runtime/VideoPlayer.java) bir göz atın. App Inventor projesinden (geçen yaz itibarıyla yeniden boyutlandırma kodu benim çalışmamdı). –

İlgili konular