首先介绍一下View类,View类是android的一个超类,每一个View都有一个用于绘画的画布,这个画布可以进行任意的扩展。有的时候我们需要自定义VIew实现自己想要的视图。view、SurfaceView是游戏开发中经常用到的视图。
View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢。
SurfaceView:基于view视图进行拓展的视图类,更适合2D游戏的开发;是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快。
下面介绍一下View和SurfaceView区别:
View:必须在UI的主线程中更新画面,用于被动更新画面。
surfaceView:UI线程和子线程中都可以。在一个新启动的线程中重新绘制画面,主动更新画面。
先实现一个VIew的例子,新建一个MyView类基础View:
下面是需要显示它的TestViewActivity类:
invalidate 注释的部分是可以在线程中更新UI界面,当然也可以在handler中调用invalidate方法更新界面,这样就可以通过线程不断的重画改变小球的颜色,而且点击画面后小球会慢慢变大。
这是其中的一张截图:
下面看一下用SurfaceView是怎么实现的,照例创建一个MySurfaceView类:
SurfaceView不需要通过线程来更新视图,但在绘图之前必须使用lockCanvas方法锁定画布,并得到画布,然后在画布上绘制;当绘制完成后,使用unlockCanvasAndPost方法来解锁画布,这样才能显示在屏幕上。
运行效果和上面的一样,就不做演示了。
分享到:
相关推荐
android之view和surfaceview用法示例汇总
Android 构建游戏框架View与SurFaceView的区别
安卓Android源码——SurfaceView添加组件view不被组件覆盖.zip
android View、SurfaceView Demo - 对应博客:http://blog.csdn.net/amoscxy/article/details/77480655
SurfaceView和TextureView均继承于android.view.View 与其它View不同的是,两者都能在独立的线程中绘制和渲染,在专用的GPU线程中大大提高渲染的性能。 一、SurfaceView专门提供了嵌入视图层级的绘制界面,开发者...
android使用双缓冲辨析及surfaceview使用例子
View与SurfaceView游戏框架Demo,监听用户方向键事件以及触摸事件。
本文主要介绍Android View类与SurfaceView类,这里提供了详细的Android View类和SurfaceView类的使用方法,有兴趣的小伙伴可以参考下
Android开发中,如何实现SurfaceView添加组件view不被组件覆盖。
一个播放本地视频的播放器,可供使用和学习。 实现功能: 1、搜索制定目录下的本地视频,并显示缩略图及视频名称在列表上;...3、包括进度条,播放和暂停...SurfaceView + MediaPlayer,RecycleView,FloatingActionButton
Android源码——SurfaceView添加组件view不被组件覆盖.zip
android中的surfaceview示例源码下载,Android SurfaceView在游戏开发中使用想当广泛,SurfaceView对于画面的控制有着更大的自由度,它不像View那样要用handler来更新,但是网上关于 SurfaceView使用这方面的参考...
SurfaceView添加组件view不被组件覆盖.zip
Android 演示View双缓冲、SurfaceView缓冲的区别,使用了部分Canvas的方法,本实例通过使用View和SurfaceView分别绘制两条曲线图,然后可以比较出两者的区别,能看出两条线在绘制过程中的差异。
解决SurfaceView设置透明造成覆盖其他组件的替代方案,同时也实现了圆盘的功能
Android应用源码之VIEW双缓冲与SurfaceView比较.zip
View的孪生兄弟SurfaceView