Как я могу просматривать видео в видеообъявлениях в определенной позиции?

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

Я уже ищу множество ссылок о масштабировании видео в 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);
    }
}

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

Ответы

Ответ 1

Пусть это поможет вам...

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>

Ответ 2

Я думаю, вам нужно создать 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...

                }
            }
        }
};

Надеемся на помощь!!