视频视图剪裁为正方形

8
使用ImageView,可以设置正方形的高度和宽度(例如100dip x 100dip)。然后使用android:scaleType="centerCrop",即使图片的长宽比例不同,也能得到一个被裁剪成正方形的图像。
那么我们是否可以在VideoView中实现相同的效果呢?
我尝试过仅设置正方形的高度和宽度,但它只会尽可能地填充正方形并保持宽高比,这是完全符合预期的。
ImageView不同,VideoView似乎没有任何缩放或裁剪属性/方法。但是,VideoView文档中的以下内容让我觉得我可能错过了什么:

[VideoView] ...提供各种显示选项,例如缩放和着色。

如果您有任何想法,请不吝赐教。
2个回答

4
您可以使用TextureView来实现视频裁剪效果,需要Android API 14和硬件加速。我在我的文章here中进行了描述。
您还可以使用我的TextureVideoView - 基于Android TextureView的自定义视图,使您能够轻松播放和裁剪视频。这与ImageView#setScaleType非常相似。
布局
<com.dd.crop.TextureVideoView
        android:id="@+id/cropTextureView"
        android:layout_width="fill_parent"
        android:layout_height="100dp"/>

代码

TextureVideoView cropTextureView = (TextureVideoView) findViewById(R.id.cropTextureView);
// Use `setScaleType` method to crop video
cropTextureView.setScaleType(TextureVideoView.ScaleType.TOP);
// Use `setDataSource` method to set data source, this could be url, assets folder or path
cropTextureView.setDataSource("http://www.w3schools.com/html/mov_bbb.mp4");
cropTextureView.play();

希望这能帮助到某些人!

1

源代码表明它在VideoView视图中不是本地支持的。但是你可以复制源代码并使其工作。:) 最有可能的方法是在第255行添加一个else,修改onMeasure以防止它扩展到满足大小等。

编辑: 不要惊讶于参考文档略有偏差或完全错误。


太好了,谢谢!只是有点遗憾,我已经一段时间前结束了这个项目! :) - Andy
@Andy, 你试过实现正方形视频了吗? - Naz141
@Naz141 不确定我是否这样做了。我想我可能已经裁剪了源视频,因为它是为演示目的而制作的。 - Andy

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