Android Videoview - 去除侧面的黑色 space

Android Videoview - Removing black space on sides

我将如何填充我的整个视频视图以便黑框消失。我不想使用 alignTop、bottom、left、right,因为当软键盘调整 videoview 时,对齐会阻止 videoview 被调整。

<RelativeLayout
        android:id="@+id/fragment_video_video_layout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintHeight_percent=".33"
        app:layout_constraintWidth_default="percent"
        app:layout_constraintTop_toTopOf="parent"
        android:gravity="center">

        <VideoView
            android:id="@+id/fragment_video_video_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <ProgressBar
            android:id="@+id/video_progress_bar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"/>

    </RelativeLayout>

编辑 1:______________________________________________________

这就是我在出现键盘时使用对齐和重新调整时发生的情况我不想这样

<VideoView
            android:id="@+id/fragment_video_video_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentLeft="true"/>

我以前遇到过这个问题 - 没有简单、明显或开箱即用 (android) 的方法来做到这一点。

根据我的理解,您正在尝试做的事情 类似于ImageView 上使用 center_crop - 对吗?为此,您可以使用外部库或使用带有 TextureView 的编程解决方案(请参阅下面的更详细说明)

...

选项 A:使用外部库

有不止一个第三方库可用于此..

我以前没用过这个,但如果我现在处于你的情况,我会用这个。

用法:

build.gradle

dependencies {
    compile 'com.yqritc:android-scalablevideoview:1.0.4'
}

layout.xml

<com.yqritc.scalablevideoview.ScalableVideoView
  android:id="@+id/video_view"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_marginBottom="100dp"
  app:scalableType="centerCrop"/>

...或使用其他选项..

我以前用过这个。然而,它看到的最后一次更新是 4-6 年前,所以是的,不确定你是否想依赖它,而且开发人员说不再支持该库。

用法:

<com.dd.crop.TextureVideoView
        android:id="@+id/cropTextureView"
        android:layout_width="fill_parent"
        android:layout_height="100dp"/>

然后

TextureVideoView cropTextureView = (TextureVideoView) findViewById(R.id.cropTextureView);
cropTextureView.setScaleType(TextureVideoView.ScaleType.CENTER_CROP);
cropTextureView.setDataSource("http://www.w3schools.com/html/mov_bbb.mp4");
cropTextureView.play();

...

选项 B:以编程方式解决问题

例如TextureView

请参阅此 post 此处了解所有详细信息。基本上,您最终会计算出必要的大小并操纵视图……

Android VideoView crop_center