2012-05-17 11 views
15

Obecnie próbuję zaimplementować wideo, które pokaże film na określonej pozycji. Bez problemu mogę pokazać film pełnoekranowy. Jednak za każdym razem, gdy próbuję pokazać to wideo w ramce (na przykład mały prostokąt), mogę pokazać tylko część wideo w tym widoku. Nie mogłem dopasować wideo do tego widoku.Jak mogę oglądać wideo w widoku wideo w określonej pozycji?

Już szukam wielu linków dotyczących skalowania wideo w systemie Android, jednak nie mogłem znaleźć żadnego sposobu, aby to zrobić. Pomocna będzie każda pomoc dotycząca tego problemu.

Używam 2 różnych klas. Jednym z nich jest moja klasa aktywność wideo i drugi jest klasa pomocnika:

public class VideoViewCustom extends VideoView { 
    private int mForceHeight = 0; 
    private int mForceWidth = 0; 
    public VideoViewCustom(Context context) { 
     super(context); 
    }  
    public VideoViewCustom(Context context, AttributeSet attrs) { 
     this(context, attrs, 0); 
    } 

    public VideoViewCustom(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    public void setDimensions(int w, int h) { 
     this.mForceHeight = h; 
     this.mForceWidth = w; 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
     setMeasuredDimension(mForceWidth, mForceHeight); 
    } 
} 

To klasa mi pomóc ustawić wymiary videoview poprawnie, jednak nie mogłem zrobić dopasowanie wideo w tym regionie. Chodzi mi o to, że nie mogłem przeskalować filmu, żeby pasował do tego regionu. Nie wiem, czy android jest autoskalowany do podanych wymiarów, ale nie mogłem tego zrobić.

+0

http://stackoverflow.com/questions/4434027/android-videoview-orientation-change-with-buffered-video Ten link może być przydatne dla Ciebie –

+0

już przejść nad nim, ale to nie zmieni. Dunno, dlaczego trudno – denizt

+2

Naprawiłem ten problem z przeniesieniem aplikacji do ICS. W ICS działa bez problemu. Jednak kiedy próbowałem to zrobić z Froyo, przeżyłem wiele problemów. Przejdę do nich, jeśli ktoś się z nimi zmierzy. – denizt

Odpowiedz

2

Może to pomoże ...

public void onMeasure(int width, int height) 
{ 
    getHolder().setFixedSize(width, height); 
    forceLayout(); 
      setMeasuredDimension(width, height); 
    invalidate(); 
} 

... i spróbować RelativeLayout

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <VideoView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentLeft="true"/> 

</RelativeLayout> 
1

Myślę, że trzeba stworzyć ViewGroup gdzie można implementuje onLayout metodę().

Tutaj możesz ustawić położenie swoich widoków bezpośrednio wywołując metodę layout() dla każdego z nich.

Przykład:

ViewGroup vg = new ViewGroup(this) { 

    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
      int x = getMeasuredWidth(); 
      int y = getMeasuredHeight(); 
      for (int i = 0; i < vg.getChildCount(); i++) { 
       if(vg.getChildAt(i) instanceof TextView){ 
        vg.getChildAt(i).layout(...);//and so on... 

       } 
      } 
     } 
}; 

Nadzieja pomaga !!

Powiązane problemy