2012-05-17 2 views
15

В настоящее время я пытаюсь реализовать видеообзор, который будет показывать видео в определенной позиции. Я могу показать полноэкранное видео без проблем. Однако всякий раз, когда я пытаюсь показать это видео внутри фрейма (например, немного прямоугольника), я могу показать только часть видео в этом представлении. Я не мог поместить видео в эту точку зрения.Как просмотреть видео в видеообъявлениях в определенной позиции?

Я уже ищу множество ссылок о масштабировании видео в Android, однако я не смог найти способ сделать это. Любая помощь по этой проблеме будет полезна.

Что я использую, у меня есть 2 разных класса. Одним из них является мой класс видео активности и другой вспомогательный класс:

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); 
    } 
} 

Этот класс поможет мне правильно установить размеры VideoView, однако я не смог сделать видео прилегание в этой области. Я имею в виду, что я не мог масштабировать видео, чтобы вписаться в этот регион. Я не знаю, является ли андроид автомасштабированием в заданные размеры, но я не мог этого сделать.

+0

http://stackoverflow.com/questions/4434027/android-videoview-orientation-change-with-buffered-video Эта ссылка может быть полезна для вас –

+0

я уже летите над ним, но это не имеет никакого значения. Dunno why tough – denizt

+2

Ну, я исправил эту проблему, поместив приложение в ICS. В ICS это работает без проблем. Однако, когда я пытался это сделать с Froyo, я столкнулся с множеством проблем. Я перейду через них, если кто-то также столкнется с ними. – denizt

ответ

2

Может это поможет ...

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

... и попробовать 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

Я думаю, что вы должны создать ViewGroup, где вы можете реализующий OnLayout() метод.

Здесь вы можете установить положение своих видов, непосредственно вызывая метод layout() для каждого из них.

Пример:

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... 

       } 
      } 
     } 
}; 

Надежда помогает !!