(转载请注明出处:http://blog.csdn.net/buptgshengod)

1.介绍

我们知道android游戏主要包含两方面。一方面是控制类,这个通过一些循环以及监听机制来实现。另一方面就是显示类。在现实类中最常见的就是view,view的机制比较适合刷新比较慢的应用,像是象棋之类的。本文要提到的SurfaceView是继承自view类。surfaceview的好处是可以随意控制对象的位置,大小等属性,最关键是的提供了SurfaceHolder类,使用getHolder方法获取,相关的有Canvas lockCanvas() 下面就来介绍下surfaceview的结构关系。

2.代码展示

    下面是surfaceview的架构,注意注释!
public class GameView extends SurfaceView implements SurfaceHolder.Callback
{SurfaceHolder surface; //新建surface对象public GameView(Context context) {super(context);// TODO Auto-generated constructor stubsurface = this.getHolder();surface.addCallback(this);//对应SurfaceHoder.Callback接口}public void createImage(){.....}//自己建函数,用来初始化图片。bitmap对象等public void ondraw(){Canvas c =this.surface.lockCanvas();……………….surface.unlockCanvasAndPost(c);}     //自己写的函数,用canavas画出bitmap在下面的循环中调用。//以下三个函数是自动生成的
@Overridepublic void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3)       { // TODO Auto-generated method stublength=arg2;//获得屏幕的高
        width=arg3;//获得屏幕宽。真的非常实用}@Overridepublic void surfaceCreated(SurfaceHolder arg0) {// TODO Auto-generated method stubnew Thread(new Repaint()).start();//一般在这里开始循环线程,而不是在构造函数中
            }@Overridepublic void surfaceDestroyed(SurfaceHolder arg0) {// TODO Auto-generated method stubisRunning=false;//结束循环}
private class Repaint implements Runnable{//runnable循环线程,不停地刷新重绘
        public void run() {while(isRunning){createImage();ondraw();}//刷新try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}}}

欢迎留言讨论,have fun!

【android-tips】SurfaceView的制作android游戏框架介绍相关推荐

  1. android 程序 读logo,制作Android启动Logo

    一.去除Embedded Linux 的开机光标: 在内核的当前目录进入到drivers/video/console/fbcon.c文件 将static void fb_flashcursor(voi ...

  2. android数据线接口定义,制作Android手机可连接普通键盘的数据转接线

    在上一篇" 现在市面上的Android手机和Android平板电脑基本上都支持USB OTG技术.这种技术将允许用户将手机或平板电脑通过usb2.0数据线连接到标准USB键盘和鼠标,甚至普通 ...

  3. android okgo 参数map,OkGo 网络请求框架介绍与使用说明

    前言 使用 Android Studio 用户 一般来说,只需要添加第一个 okgo 的核心包即可,其余的三个库根据自己的需要选择添加. //必须使用 compile 'com.lzy.net:okg ...

  4. android listview 数据数组制作,android – 从对象的数组列表中填充listview

    在你的活动 AdapterPerson adbPerson; ArrayList myListItems = new ArrayList(); //then populate myListItems ...

  5. Leaf:GO语言游戏框架介绍及入门

    Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏服务器框架.Leaf 适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器. Leaf 的关注点: 良好的 ...

  6. android studio gradle 添加jar,android studio学习----通过gradle来导入jar包

    转载地址:http://www.th7.cn/Program/Android/201507/495477.shtml File->Project Structure 可以打开下面的图: 1.通过 ...

  7. GitHub开源游戏框架和引擎介绍

    GitHub开源游戏框架介绍 ET ET的介绍 GitHub地址 NoahGameFrame NoahGameFrame的介绍 GitHub地址 CSDN相关教程 ET ET的介绍 ET是一个开源的游 ...

  8. 【读书笔记《Android游戏编程之从零开始》】11.游戏开发基础(SurfaceView 游戏框架、View 和 SurfaceView 的区别)...

    1. SurfaceView 游戏框架实例 实例效果:就是屏幕上的文本跟着点击的地方移动,效果图如下: 步骤: 新建项目"GameSurfaceView",首先自定义一个类&quo ...

  9. Android使用SurfaceView开发《捉小猪》小游戏 (一)

    先上效果图: 哈哈, 说下实现思路: 我们可以把每一个树桩, 小猪, 车厢都看成是一个Drawable, 这个Drawable里面保存了x, y坐标, 我们的SurfaceView在draw的时候, ...

最新文章

  1. PHP学习总结(函数、数组、字符串)
  2. 高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用
  3. leetcode 1046. 最后一块石头的重量(堆)
  4. [css] css怎样使每个字符宽度一样?
  5. 【MySQL】Java.sql.SQLException Incorrect string value: \xF0\x9F\x98\x8D\xE8\xBE...
  6. MyBatis的总结(上)
  7. EmEditor Pro 8.3简体中文绿色增强(无需安装)版
  8. malloc函数C语言实现
  9. 用C语言计算矩阵求和
  10. 【读书笔记->统计学】03-02 各种“距”和“差”-方差、标准差、标准分概念简介
  11. 怎样恢复计算机程序打开文件名,Word提示如何解决使用文本恢复转换器打开文件的问题...
  12. 2019级软件工程应用与实践-人工智能快递柜(代码分析7)
  13. Java用户账号密码创建登录
  14. 关于STM32F407ZGT6的一些知识小结及串口1程序
  15. C语言初阶_初识C语言(1)
  16. 川崎机器人 K-ROSET 仿真软件插件开发
  17. iOS开发——网络请求案例汇总
  18. Using fallback Sshlinedraw for CID-keyed font STSong-Light
  19. 给IntelliJ IDEA换了个皮肤,加了几个插件,发现我爱上了敲代码:)
  20. 用DFS和函数实现全排列:

热门文章

  1. 程序设计竞赛算法基础考试真题2020年(回忆版)
  2. 方舟服务器建家位置,《方舟 生存进化》最佳建家位置,新手玩家根本无法想象!...
  3. rmg超声波流量计算机价格,超声波流量计
  4. linux同名文件夹覆盖_第一天:Linux——复习
  5. 开放大学计算机应用基础形考答案,国家开放大学计算机应用基础形考作业二答案~.doc...
  6. 2019帝豪gs装软件_短试新帝豪GS:冷门的跨界SUV,为什么吉利能做成爆款?
  7. Qt中的QInputDialog
  8. mysql复制架构迁移到pxc_mysql复制(高可用架构方案的基础)
  9. 单片机实现环形队列_单片机模块化程序: 难道有环形队列串口发送数据就万事大吉了吗...
  10. 三目运算法求一个大值,以及指定位数的应用,以及函数的声明,以及函数的嵌套,以及函数的递归,以及用递归法求阶乘