SurfaceView缩放时视频不缩放

时间:2014-09-11 12:26:01

标签: android video scale surfaceview android-videoview

我正在使用surfaceView播放视频。当我缩放surfaceView时,它的协调被正确缩放,但正在播放的视频内容不是。

我正在使用ViewHelper.setscaleX方法缩放视图。 我尝试了几件事,但无法缩放视频..如果我改变了参数,那么视频就会被正确缩放。但这使得过渡缓慢。 请查看初始视频和最终视频的快照(缩放后)。

initial video with surface view scale 1

video after surfaceView is scaled. See at the bottom-right

4 个答案:

答案 0 :(得分:1)

解决了它。使用TextureView而不是SurfaceView。动画在surfaceview上不起作用。使用此链接可以使用textureView:Playing video on TextureView

播放视频

答案 1 :(得分:1)

请注意,当使用OpenGL绘制视频时,TextureView将消耗比SurfaceView更多的电池,而SurfaceView可以使用硬件覆盖(如果可用)。

正如其他人在评论中所说,你可以通过修改视图的layoutParams来达到你想要的效果。

答案 2 :(得分:0)

如果您必须坚持使用SurfaceView,因为您正在使用第三方库或诸如此类的东西,解决方法是使用缩放动画缩小它并在动画完成后,更新SurfaceView的布局图给出正确的大小和位置。它并不完美,但应该对那些别无选择的人有好处。

答案 3 :(得分:0)

在surfaceview上方添加一个透明视图,如相对布局,并在该透明视图上添加scalegesture探测器,当缩放发生时,只需在surfaceview或textureview上执行缩放。

我们假设透明视图名为videoview

Videoview.setOnClicklistner();

执行缩放时,请将scalefactor转换为surfaceview

Surfaceview.setscaleX(scalefactor);
Surfaceview.setscaleY(scalefactor);

它会顺利运作