安卓学习59

今天学习了安卓的一些知识其中主要的是:

View 和和SurfaceView

在Android 游戏当中充当主要的除了控制类外就是显示类,在J2ME 中我们用Display 和Canvas 来实现这些,而Google

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 接口回调中可以通过下面三个抽象类可以自己定义具体的实现,比如第一个更改格式和

显示画面。

abstract void surfaceChanged(SurfaceHolder holder, int format, int width, int height)

abstract void surfaceCreated(SurfaceHolder holder)

abstract void surfaceDestroyed(SurfaceHolder holder)

对于Surface 相关的,Android 底层还提供了GPU 加速功能,所以一般实时性很强的应用中主要使用SurfaceView 而

不是直接从View 构建,同时Android123 未来后面说到的OpenGL 中的GLSurfaceView 也是从该类实现。

原文地址:https://www.cnblogs.com/092e/p/14916716.html