Android之SurfaceView和TextureView的分析

 

主要是分析Android中的SurfaceView和TextureView的机制,了解它们的相同点和不同点,以方便在以后的开发中更加合理的选择应用App的开发控件

一、SurfaceView分析


1、SurfaceView继承于android.view.View,因些它本质上也是一个View。
 

2、它与普通View不同的是,它有自己的Surface,在WMS(即WindowManagerService)中有对应的WindowState,在SurfaceFlinger中有Layer。


优点:

3、SurfaceView可以在一个独立的线程中进行绘制,不会影响到主线程。

4、SurfaceView使用的是双缓冲机制,播放视频时画面会更加流畅。

缺点:

5、由于Surface不在View hierachy中,所以它的显示也不受View的属性控制,所以不能进行平移,缩放等变换,也不能放在其它ViewGroup中。

6、SurfaceView也不能嵌套使用。


二、TextureView分析


1、TextureView是在4.0(API level 14)中引入,也是继承于android.view.View,因些它本质上也是一个View。它可以将内容流直接投影到View中,所以可以用于实现Live preview等一些功能。

优点:

2、TextureView支持移动、旋转、缩放等动画,支持截图等。

缺点:

3、TextureView必须在硬件加速的窗口中使用,占用内存比SurfaceView高,在5.0以前在主线程渲染,5.0以后有单独的渲染线程。


三、分析总结


1、但是对于一些类似于2D等游戏需要不断更新画布的来说,SurfaceView会是比较好的选择。但是直播软件、视频播放器或相机应用的开发,推荐选择TextureView更加适合,这样截图、美颜功能的处理速度则更加高效。

2、Texture更像是一般的View,像TextView那样能被缩放、平移,也能加上动画。

3、TextureView只能在开启了硬件加速的Window中使用,并且消费的内存要比SurfaceView多,并伴随着1-3帧的延迟。


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值