游编(4)—View与SurfaceView视图绘制框架对比
前言
在之前的文章,我们已经了解了View游戏视框架
和SurfaceView游戏视图框架
,它们都可以为游戏的开发带来很好的视图展示效果。感兴趣的可参考以下文章
游编(1)—View游戏框架
游编(2)—SurfaceView游戏框架<上>
游编(3)—SurfaceView游戏框架<下>
那么当我们开发的时候,如何选择哪个框架作为展示的控件呢?下面就来学习下吧
今天涉及知识点:
- View框架优劣
- SurfaceView框架优劣
- 两个框架使用场景
一. View框架优劣
通过之前的学习,我们可以知道View框架
是通过主动触发游戏逻辑来驱动游戏后续动作的,如点击,触摸等驱动界面重绘。当然,它还涉及到两个重要方法:
- invalidate() 只能在主线程中执行,驱动界面重绘
- postInvalidate() 可以在子线程中循环调用,驱动界面重绘
画面一般有主UI来更新,这回导致一个问题,一旦主界面ui更新绘制时间过长,就会导致界面卡死,触屏键,返回键等失效。
而且View游戏框架
没有双缓冲机制。这就是View
框架的劣势。
二.SurfaceView框架优劣
SurfaceView
拥有双缓冲机制,其继承自View
,却通常是自定义一个类似draw
的方法,而不是使用View
的onDraw()
方法来绘制视图。SurfaceView
的视图重绘通常是利用单独的线程去更新,所以不会出现类似 界面卡死,触屏键,返回键失灵的情况。
还有一个重要区别View
是主动驱动界面绘制,而SurfaceView
是被动驱动绘制,所以SurfaceView
要不断更新画布,对手机的开销很大。
三. 两个框架使用场景
讲了这么多,由于SurfaceView
继承自View
,一般情况下,更适合于做游戏的开发,单这并不表示任何情况下SurfaceView框架
都比View框架
好.在实际开发中,一般是根据游戏类型来确定使用哪个游戏视图框架。
- 比如棋牌游戏,界面需要更新的时候,一般是由于用户的按键或触屏操作,这时使用
View
作为视图展示框架就很好。 - 而 RPG(Role-playing Game,即 角色扮演游戏),射击等游戏,由于其界面有很多需要移动的背景,自动走动的人物,流水等不需与人交互而又动态变化的元素,则使用
SurfaceView框架
更好
由于当前市场游戏泛滥,为了满足广大用户的游戏需求,各种类型的游戏层出不穷。所以大多数时候,我们都用SurfaceView
进行游戏视图的开发,因为SurfaceView
可以开发更多的游戏类型。
ok, 今天的内容就介绍到这里了,谢谢大家。