android中的VideoView和TextureView和Suraceview有啥区别?

Posted

技术标签:

【中文标题】android中的VideoView和TextureView和Suraceview有啥区别?【英文标题】:What's the difference between VideoView and TextureView and Suraceview in android?android中的VideoView和TextureView和Suraceview有什么区别? 【发布时间】:2016-05-05 08:34:23 【问题描述】:

android中VideoView和TextureView、Suraceview有什么区别?

我什么时候使用它们?

【问题讨论】:

VideoView 只是播放视频的 SurfaceView 的包装器。如果您想了解血腥细节,请参阅source.android.com/devices/graphics/architecture.html 【参考方案1】:

对不起,迟到的答案,只是偶然发现了这个,但 TL;DR 的答案是这样的:

VideoView -> VideoView 扩展了 SurfaceView,本质上就是 SurfaceView + MediaPlayer。为了您的方便,表面和 MediaPlayer 等的拆卸由小部件负责。

SurfaceView-> 根据 Android 开发者的说法:

提供嵌入视图层次结构中的专用绘图表面。您可以控制此表面的格式,如果您愿意,还可以控制它的大小; SurfaceView 负责将表面放置在屏幕上的正确位置

表面是 Z 顺序的,因此它位于持有其 SurfaceView 的窗口后面; SurfaceView 在其窗口中打了一个洞以显示其表面

这意味着它从视图层次结构中获取信息来创建连接到 GPU 的专用绘图区域。其缺点是没有花哨的视图内容,例如动画和过渡。但性能更高

TextureView -> 来自 Android 开发者:

与 SurfaceView 不同,TextureView 不会创建单独的窗口,而是像常规视图一样运行。这个关键区别允许对 TextureView 进行移动、转换、动画等操作

你知道了,TextureView 的缺点意味着,由于它是你的视图层次结构的一部分,它会在视图传递期间自行重绘它,从而消耗更多资源,但是你将有动画、过渡、alpha 等。

【讨论】:

以上是关于android中的VideoView和TextureView和Suraceview有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

媒体控制器不适用于 Android 中的 VideoView

为啥 Android 中的 VideoView 需要花费太多时间来加载和播放来自 http 链接的视频?

Android VideoView - 检测视频中的时间点

如何通过单击 Android 中的按钮使 VideoView 全屏显示?

android java中的圆角videoview

Android VideoView 中的纵向视频不会占用整个屏幕宽度