【Android】View类详解 (游戏开发必备)
Android游戏开发中比较重要和复杂的就是显示和游戏逻辑的处理。
这里我们说下android.view.View 和 android.view.SurfaceView。
SurfaceView是从View基类中派生出来的显示类,直接子类有GLSurfaceView和VideoView,可以看出GL和视频播放以及Camera摄像头一般均使用SurfaceView,到底有哪些优势呢?
SurfaceView可以控制表面的格式,比如大小,显示在屏幕中的位置,最关键是的提供了SurfaceHolder类,使用getHolder方法获取,相关的有Canvas lockCanvas()
Canvas lockCanvas(Rect dirty) 、void removeCallback(SurfaceHolder.Callback callback)、void unlockCanvasAndPost(Canvas canvas) 控制图形以及绘制,
而在SurfaceHolder.Callback 接口回调中可以通过下面三个抽象类可以自己定义具体的实现,比如第一个更改格式和显示画面。
对于Surface相关的,Android底层还提供了GPU加速功能,所以一般实时性很强的应用中主要使用SurfaceView而不是直接从View构建,同时Android123未来后面说到的OpenGL中的GLSurfaceView也是从该类实现。
下面着重介绍View类:
以上是View实现的一些基本接口的回调方法,一般我们需要处理画布的显示时,重写onDraw(Canvas)用的的是最多的:
当然还有就是处理窗口还原状态问题(一般用于横竖屏切换),除了在Activity中可以调用外,开发游戏时我们尽量在View中使用类似。
在View中如果需要强制调用绘制方法onDraw,可以使用invalidate()方法,它有很多重载版本,同时在线程中的postInvailidate()方法将在Android游戏开发之旅六中的 自定义View完整篇讲到。
转载自: http://www.android123.com.cn/androidkaifa/541.html
更多相关文章
- Android(安卓)Jetpack之LiveData源码分析
- 保存和重入Activity 状态的最简单方法
- android 4.0 屏蔽 HOME_KEY 和 RECENT_APP_KEY
- Android之NDK开发 Android(安卓)studio 篇
- android有了eventbus,一切与关界面通信问题迎刃而解。
- Android(安卓)WebView 与 原生的交互
- Android(安卓)四种异步操作UI界面的方法
- Android(安卓)Root方法原理解析及Hook(四) GingerBreak
- Android在非UI线程中更新UI的方法
随机推荐
- Android(安卓)6.0 动态申请权限无效问题
- ubuntu linux 解锁(unlock) root nexus s
- Android调用Camera,获取预览帧中的图像
- Android(安卓)AutoSearchBug自动捕获异常
- android setWebChromeClient和setWebView
- android 多个cursor 的读取 和读取某个Cu
- Android(安卓)接入百度内置导航demo
- Android写休闲游戏 翻翻看
- [Android]_[初级]_[sdk docs reference a
- Android(安卓)Studio报错:ERROR: Failed t