Android中的VideoView和TextureView以及Suraceview有什么区别?
我什么时候使用每一个?
答案 0 :(得分:1)
对不起,我很晚才回答这个问题,但是TL; DR答案是这样的:
VideoView
-> VideoView扩展了SurfaceView,本质上只是SurfaceView + MediaPlayer。为方便起见,小部件会处理表面和MediaPlayer的拆卸工作。
SurfaceView
->根据Android开发者:
提供嵌入在视图层次结构内部的专用绘图表面。您可以控制此表面的格式,也可以控制其大小; SurfaceView负责将表面放置在屏幕上的正确位置
表面按Z顺序排列,以使其位于拥有SurfaceView的窗口后面; SurfaceView在其窗口上打一个孔以显示其表面
这意味着它需要从视图层次结构中获取信息来创建连接到GPU的专用绘图区域。这样做的缺点是没有精美的视图内容,例如动画和过渡效果。但是表现更好
TextureView
->来自Android Developer:
与SurfaceView不同,TextureView不会创建单独的窗口,而是表现为常规的View。这种关键的区别允许对TextureView进行移动,转换,设置动画等
就这样,TextureView的缺点在于,由于它是视图层次结构的一部分,因此它将在视图传递期间自行重绘,从而花费更多资源,但是您将具有动画,过渡,alpha等。