Android 如何在特定位置的videoview中查看视频?

Android 如何在特定位置的videoview中查看视频?,android,video,android-videoview,Android,Video,Android Videoview,我目前正在尝试实现一个视频视图,该视图将在特定位置显示视频。我可以毫无问题地显示全屏视频。然而,每当我试图在一帧(例如一个小矩形)内显示该视频时,我只能在该视图中显示视频的一部分。我无法将视频放入该视图中 我已经在寻找很多关于在android中缩放视频的链接,但是我找不到任何方法来实现这一点。关于这个问题的任何帮助都会有帮助 我使用的是我有两个不同的类。其中一个是我的视频活动类,另一个是助手类: public class VideoViewCustom extends VideoView {

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

我已经在寻找很多关于在android中缩放视频的链接,但是我找不到任何方法来实现这一点。关于这个问题的任何帮助都会有帮助

我使用的是我有两个不同的类。其中一个是我的视频活动类,另一个是助手类:

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是否能自动缩放到给定的维度,但我做不到。

这可能会帮助你

public void onMeasure(int width, int height)
{
    getHolder().setFixedSize(width, height);
    forceLayout();
            setMeasuredDimension(width, height);
    invalidate();
}
…试试相对论

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

我认为您必须创建一个视图组,在其中可以实现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...

                }
            }
        }
};
ViewGroup vg=新视图组(此){
@凌驾
仅受保护的void布局(布尔值已更改、int l、int t、int r、int b){
int x=getMeasuredWidth();
int y=getMeasuredHeight();
对于(int i=0;i

希望有帮助

这个链接可能对你有用,我已经看过了,但没什么区别。不知道为什么toughWell通过将应用程序移植到ICS解决了这个问题。在集成电路中,它可以正常工作。然而,当我试图和弗罗约一起做这件事时,我遇到了很多问题。如果有人也面临这些问题,我会仔细检查。第一个问题是如何将不同类型的视频放入一个区域。这是因为android使用的视频播放器。我从android源代码更改视频播放器类型,然后.avi、.mov和.mp4开始适应指定的坐标。但是,我的内核版本是2.2,我不能同时播放多个视频。这就是我将应用程序移植到ICS的原因。在ICS中,我可以同时播放多个视频而不会出现问题。