之前的博文SurfaceView 基础用法对SurfaceView做了基础的介绍,但没有对其不足的地方进行说明,本篇讲SurfaceView的不足之处,已及AndroidN上SurfaceView的新特性。
SurfaceView的不足
与普通View不同,surfaceview有自己的Surface。一般的Activity包含的多个View会组成View hierachy的树形结构,只有最顶层的DecorView,也就是根结点视图,才是对WMS可见的。surfaceview不在View hierachy中,它的显示也不受View的属性控制,所以在Android7.0之前不能进行平移,缩放等变换。例如,通过surfaceview来显示一个视频,此时对surfaceview进行缩放处理,视频内容是不会跟着surfaceview进行缩放的。这点可以结合图-1直观的看。
可以看到普通View旋转后,View的内容也跟着同步做了旋转,但SurfaceView在旋转之后,其显示内容并没有跟着一起旋转。这就好比在墙上开了一个窗(Surface),通过窗口可以看外面的花花世界,但窗口无论怎样变化,窗外面的世界是不会跟着窗口一同变化。
在罗神的博客 Android视图Surfa