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
我将如何填充我的整个视频视图以便黑框消失。我不想使用 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