使用ImageView
,我可以设置方形高度和宽度(比如100dip x 100dip)。然后使用android:scaleType="centerCrop"
给我一个图像,无论纵横比如何,都将其裁剪为正方形。
我们可以使用VideoView
吗?
我尝试过设置一个正方形的高度和宽度,但它只是重新调整尺寸以尽可能地填充正方形,同时保持纵横比,我猜这是完全可以预期的。
与ImageView
不同,它似乎没有任何比例或裁剪属性/方法,但VideoView
文档中的这些让我觉得我遗漏了一些东西:
[VideoView] ...提供各种显示选项 例如缩放和着色。
非常感谢任何想法。
答案 0 :(得分:4)
您需要使用需要Android API 14和硬件加速的TextureView
来实现视频裁剪效果。我在文章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 :(得分:1)
Source表示VideoView视图中本身不支持它。您可以复制源并使其工作。 :)最有可能的方法是在第255行添加 else ,修改onMeasure以防止它扩展以满足大小等。
编辑: 不要感到惊讶的是,参考文档稍微偏离或完全错误。