SurfaceView和View区别

SurfaceView 的绘制方式效率非常高,因为SurfaceView的窗口刷新的时候不需要重绘应用程序的窗口(android 普通窗口的实体绘制机制是一层一层的,任何一个子元素或者局部的刷新都会导致整个视图接口全部重绘一次,因此效率非常低下)。


View 通过刷新来重绘视图,Android系统通过发出VSYNC信号来进行屏幕的绘制,刷新的时间一般为16ms,在一些需要频发刷新的界面,如果刷新执行很多逻辑绘制操作,就会导致刷新使用时间超过16ms,就会导致丢帧或者卡祯,如果你更新画面时间过长,那么你的主UI线程会被你的绘制函数阻塞,那么将无法响应按键,触屏等消息,会ANR。

SurfaceView虽然继承View,但拥有独立的surface,即他不雨其宿主窗口共享surface,可以单独在一个线程中绘制,并不占用主线程资源,这样绘制就会比较高效,游戏、视频播放都可以用surfaceView来实现。


surfaceView优缺点

优点:可以在一个独立的线程中进程绘制,不会影响UI主线程。

缺点:surfaceView不在View hierachy中,它的显示也不受View的属性控制,所有不能进行平移,缩放等变换。也不能放在其它ViewGroup中,SurfaceView不能嵌套使用。

你可能感兴趣的:(SurfaceView和View区别)