Android 游戏开发之 SurfaceView

   当我们从事复杂的图像绘制或者对程序的执行效率要求比较高的时候,我们会发现View是不能满足需求的。View是widget框架下的一个直接拖拉的控件产物。例如我们需要使用双缓冲来显示,直接访问画布canvas.这些都导致了我们需要比View更加强大的SurfaceView的出现。

    在使用SurfaceView的时候我们需要注意的是,使用他们绘图的时候,一般都是出现在最顶层的。使用时需要对其进行创建、销毁、情况改变时进行监视,这个需要实现SurfaceHolder.Callback接口。如果要对被绘制的画布进行裁剪,控制其大小时都需要用SurfaceHolder来完成处理。

    在SurfaceView的派生类中,使用getHolder方法来获取SurfaceHolder对象。同时还需要addCallback方法来添加回调函数。

 

surfaceChanged :在surfaceview的大小发生改变的时候调用。

surfaceCreated  : 在创建Surface时激发。

surfacedestroyed:在销毁Surface时激发。

addCallback:给SurfaceView添加一个回调函数。

lockCanvas :锁定画布。绘图之前必须锁定画布才能够得到画布对象。

unlockCanvasAndPost:开始绘制时锁定了画布,绘制完成之后解锁画布。

removeCallback:从SurfaceView中移除回调函数。

 

 

SurfaceView不同于View之处在于,SurfaceView不需要通过线程来更新视图,但是再绘制前需要使用lockCanvas锁定画布,并且得到画布,然后在画布上绘制你需要的图像。绘制完成之后需要使用lockCanvasAndPost方法来解锁画布。于是才能显示在屏幕之上。事件的处理规则和View是一样的。

 

 下面我们来再屏幕闪显示一组图片,来做个Demo.

 

 

这里只是简单的记录使用方法。Android的API实在太多了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值