Android VideoView如何像ImageView的scale type fitXY一样进行缩放?

16

我在一个RelativeLayout中放置了一个ImageView和一个VideoView。 通过 scaleType="fitXY" 可以让ImageView缩放以填充整个布局。然而,VideoView没有类似的缩放属性。顺便说一下,我通过 setMediaController(null) 隐藏了视频控制器,只显示视频内容。是否可能将VideoView缩放而不保持纵横比?以下是布局示例。

<RelativeLayout
    android:layout_width="280dp"
    android:layout_height="200dp">

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/image"
        android:scaleType="fitXY" />

    <VideoView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/video"
        android:visibility="invisible"
        android:layout_centerInParent="true" />
</RelativeLayout>

尝试给定静态宽度和高度。 - Haresh Chhelana
它不起作用。我尝试设置<VideoView android:layout_width="280dp" android:layout_height="200dp"/>,但得到了保持纵横比的结果。 - Jones
你试过我的答案了吗? - Haresh Chhelana
是的,它能正常工作。谢谢。 - Jones
我已经实现了这个解决方案,它的效果非常好:https://dev59.com/WmIk5IYBdhLWcg3wFKlK#59069292 - Bhavya Rattan
2个回答

38
尝试将VideoView放置在RelativeLayout中,并设置以下属性以全屏显示视频:
<VideoView
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:id="@+id/video"
   android:visibility="invisible"
   android:layout_alignParentBottom="true"
   android:layout_alignParentLeft="true"
   android:layout_alignParentRight="true"
   android:layout_alignParentTop="true"/>

注意:请根据您的需求设置可见性值。


@Jones,很高兴帮助你。 - Haresh Chhelana
4
目前为止,我太害怕问为什么了......不过这样也可以! - egorikem

3

我的方法是重写 VideoViewonMeasure 方法。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),
            getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接