如何在某个特定位置观看视频内的视频?

时间:2012-05-17 10:27:35

标签: android video android-videoview

我目前正在尝试实施一个视频视频,该视频将在特定位置显示视频。我可以毫无问题地显示全屏视频。但是每当我试图在一个帧内显示该视频时(例如一个小矩形),我只能在该视图中显示一部分视频。我无法将视频放入该视图中。

我已经在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);
    }
}

该课程帮助我正确设置视频视图的尺寸,但是我无法使视频适合该区域。我的意思是我无法缩放视频以适应该区域。我不知道android是否自动缩放到给定的维度但我无法做到。

2 个答案:

答案 0 :(得分: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 :(得分: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...

                }
            }
        }
};

希望帮助!!