Android VideoView - 在屏幕方向更改后维护纵横填充

时间:2017-02-03 15:23:03

标签: android android-videoview aspect

我是iOS开发人员将iOS应用程序移植到Android,所以请耐心等待。我有一个VideoView作为"视频背景"。关于它的一切都正常工作 - 纵向视图和方向更改(纵向视图)除外。在AndroidManifest文件中,我进行了活动设置,以便屏幕方向不会触发布局刷新:

android:configChanges="orientation|screenSize"

这是正常的;无法正常工作的是VideoView中正在播放的视频的宽高比。视频倾斜以适合纵向边界,而不是裁剪左右两侧以保持纵横比。如何强制VideoView进行" aspect-fill"它里面的视频容器?我还要提一下,这个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"/>

1 个答案:

答案 0 :(得分:0)

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

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

关于缩放视频视图,这是另一个问题。查看此答案以获取更多信息: https://stackoverflow.com/a/7225469/4244598

https://stackoverflow.com/a/12335916/4244598

http://blog.kasenlam.com/2012/02/android-how-to-stretch-video-to-fill.html