SurfaceView in android

SurfaceViewView最本质的区别在于, surfaceView是在一个新起的单独线程中可以重新绘制画面而 View必须在 UI的主线程中更新画面。因而,在绘制与更新画面的游戏当中,经常使用 SurfaceView而不是 View
在游戏中,一个单独的 thread不停的重绘主角与背景的状态,避免阻塞 main UI thread
Android
中的 SurfaceView类就是双缓冲机制。因此,开发游戏时尽量使用 SurfaceView而不要使用 View

SurfaceView
可以控制表面的格式,比如大小,显示在屏幕中的位置,最关键是的提供了 SurfaceHolder类,使用 getHolder方法获取,相关的有 Canvas lockCanvas() 
Canvas lockCanvas(Rect dirty)
void removeCallback(SurfaceHolder.Callback callback)void unlockCanvasAndPost(Canvas canvas) 控制图形以及绘制,而在 SurfaceHolder.Callback 接口回调中可以通过重写下面方法实现。 

使用的 SurfaceView的时候,一般情况下要对其进行创建,销毁,改变时的情况进行监视,这就要用到 SurfaceHolder.Callback. 
class XxxView extends SurfaceView implements SurfaceHolder.Callback { 

public void surfaceChanged(SurfaceHolder holder,int format,int width,int height){} 
//
看其名知其义,在surface 的大小发生改变时激发 
public void surfaceCreated(SurfaceHolder holder){} 
//
同上,在创建时激发,一般在这里调用画图的线程。 
public void surfaceDestroyed(SurfaceHolder holder) {} 
//
同上,销毁时激发,一般在这里将画图的线程停止、释放。 

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值