Android VideoView-在屏幕方向改变后保持外观填充

Android VideoView-在屏幕方向改变后保持外观填充,android,android-videoview,aspect,Android,Android Videoview,Aspect,我是一名将iOS应用程序移植到Android的iOS开发者,所以请容忍我。我有一个视频视图,可以作为“视频背景”。所有关于它的工作都正常-除了在纵向视图和方向改变(纵向视图)。在AndroidManifest文件中,我有我的活动设置,以便屏幕方向不会触发布局刷新: android:configChanges="orientation|screenSize" 这是正确的工作;无法正常工作的是在VideoView中播放的视频的纵横比。视频将倾斜以适合纵向边界,而不是剪切左右两侧以保持纵横比。如何强

我是一名将iOS应用程序移植到Android的iOS开发者,所以请容忍我。我有一个视频视图,可以作为“视频背景”。所有关于它的工作都正常-除了在纵向视图和方向改变(纵向视图)。在AndroidManifest文件中,我有我的活动设置,以便屏幕方向不会触发布局刷新:

android:configChanges="orientation|screenSize"
这是正确的工作;无法正常工作的是在VideoView中播放的视频的纵横比。视频将倾斜以适合纵向边界,而不是剪切左右两侧以保持纵横比。如何强制VideoView在其容器中“方面填充”视频?我还应该提到,这个视频视图是ConstraintView的一个子视图。以下是适用的XML:

<VideoView
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:id="@+id/videoView2"
    app:layout_constraintBottom_toBottomOf="@+id/imageView3"
    app:layout_constraintLeft_toLeftOf="@+id/imageView3"
    app:layout_constraintRight_toRightOf="@+id/imageView3"
    app:layout_constraintTop_toTopOf="@+id/imageView4"
    android:scaleType="centerCrop"
    android:adjustViewBounds="true"/>

您可以在方向更改后通过编程检查方向(通过
onConfigurationChanged()
),并根据需要设置视频视图比例类型

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
        // set video view configurations to what you want on landscape
    }else{
        // set video view configurations to what you want on portrait
    }
}
关于缩放视频视图,这是另一个问题。查看此答案以了解更多信息:


我有一个用于
onConfigurationChanged()
的侦听器-什么代码会改变视频视图的缩放?第三个链接正是我尝试过的方法,但我的基本布局是一个约束布局,我认为这会影响该方法中推荐的相对布局。你真的需要约束布局吗?我知道这对你来说更熟悉,因为你有iOS背景,但也许你可以用另一种类型的容器实现同样的行为。不幸的是,我相信我能做到——准确地模仿我们iOS应用程序的外观。我们有一个6个按钮的网格,它以一种独特的方式进行缩放,我认为使用另一个容器是无法实现的。您是否尝试过使用权重的线性布局?或者相对布局的百分比?