Android植物大战僵尸教程学习总结(一)

本文是关于Android游戏开发的学习总结,主要聚焦在SurfaceView的使用上。介绍了SurfaceView的概念、特点、与其他View的区别,以及如何在SurfaceView中进行绘图操作。文章还涉及SurfaceHolder的重要方法,并提供了简单的游戏开发示例,如锁定和解锁画布,以及使用synchronized关键字确保线程安全。
摘要由CSDN通过智能技术生成

           转眼间就2015年了,时间过得真快,基本在找资料的时候很多都在CSDN的博客里找到。现在,也自己开始写了,希望自己能在这条路上坚持下去吧。

           一开始是看着老师的视频一点点打的,整个看完了以后,整理了一下思路,重新自己打了一遍,也是遇到了很多的问题,看似是理解了,但是实际操作起来还是有很多的问题,最后还是完成了。老师写的只算是 个半成品,还有许多地方可以完善,这篇文章先写下来,趁热打铁嘛,这样自己以后也方便温习。然后一些知识点,都是我学到的,都加了淡色背景,可能排版还是有点糟,就先这样吧。

 首先,先把工程下的几个包列一下

         XXX为工程包名

        XXX.entity   这个包用来放所有的实体集合

XXX.global 这个包用来放所有的静态全局变量

XXX.model这个包用来放父类(用于实体的extends)和一些接口

XXX.tools    这个包用来放图像处理类的工具

XXX.view     这个包用来放视图类的文件

先在.view包下新建GameView,让其extends   SurfaceView,实现接口SurfaceHolder.Callbak和Runnable


关于SurfaceView

一、什么是SurfaceView?

可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图容器。它的特性是:可以在主线程之外的线程中向屏幕绘图上。这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画出。


    二、SurfaceView和其他View的区别?

SurfaceView和View最本质的区别在于,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面。可以理解为Surfaceview的更新不需要在主线程中进行,这样就可以避免主线程来做大量的界面更新操作,引起ANR(主线程的界面更新的消息队列当中存在大量的更新界面请求)。


      三、SurfaceView的使用

首先继承SurfaceView并实现SurfaceHolder.Callback接口使用接口的原因:因为使用SurfaceView 有一个原则,所有的绘图工作必须得在Surface 被创建之后才能开始,而在Surface 被销毁之前必须结束。所以Callback 中的surfaceCreated 和surfaceDestroyed 就成了绘图处理代码的边界。


上面提到了SurfaceHolder这个类

       关于SurfaceHolder

可以把SurfaceHolder当成surface的控制器,用来操纵surface。处理它的Canvas上画的效果和动画,控制表面,大小,像素等。几个需要注意的方法:

(1)、abstract void addCallback(SurfaceHolder.Callback callback);
// 给SurfaceView当前的持有者一个回调对象。

(2)、abstract Canvas lockCanvas();
// 锁定画布,一般在锁定后就可以通过其返回的画布对象Canvas,在其上面画图等操作了

(3)、abstract Canvas lockCanvas(Rect dirty);
// 锁定画布的某个区域进行画图等..因为画完图后,会调用下面的unlockCanvasAndPost来改变显示内容。

// 相对部分内存要求比较高的游戏来说,可以不用重画dirty外的其它区域的像素,可以提高速度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值