android技巧:SurfaceView的制作android游戏框架介绍

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 stub
        surface = this.getHolder();
        surface.addCallback(this);//对应SurfaceHoder.Callback接口
           }
      public void createImage(){.....}//自己建函数,用来初始化图片。bitmap对象等
      public void ondraw(){
           Canvas c =this.surface.lockCanvas();
              ……………….
           surface.unlockCanvasAndPost(c);
                   }     //自己写的函数,用canavas画出bitmap在下面的循环中调用。  

//以下三个函数是自动生成的
@Override
    public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3)
     { // TODO Auto-generated method stub
        length=arg2;//<span style="color:#ff0000">获得屏幕的高
</span>     width=arg3;//<span style="color:#ff0000">获得屏幕宽。真的非常实用</span>
    }  

    @Override
    public void surfaceCreated(SurfaceHolder arg0) {
        // TODO Auto-generated method stub  

        new Thread(new Repaint()).start();//<span style="color:#ff0000">一般在这里开始循环线程,而不是在构造函数中
</span>
    }  

    @Override
    public void surfaceDestroyed(SurfaceHolder arg0) {
        // TODO Auto-generated method stub
          isRunning=false;//结束循环  

    }
private class Repaint implements Runnable{
        <span style="color:#ff0000">//runnable循环线程,不停地刷新重绘
</span>     public void run() {
            while(isRunning){
                createImage();
                ondraw();
                }  

                //刷新
                                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
    }

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 循环
, android callback
, surfaceview
, lockcanvas
, surface
, public
, surfacecreated
, android surfaceview
, surfaceholder
, surfaceview报错
, 图片显示surfaceview
, surface安卓android
void
,以便于您获取更多的相关知识。

时间: 2024-08-01 23:16:57

android技巧:SurfaceView的制作android游戏框架介绍的相关文章

android技巧:如何在android应用中插入百度广告

1.介绍 现在游戏中的广告基本上已经成为了游戏创作者的一个重要的收入来源.其实插入广告还是挺简单的,本文选择百度广告联盟作为案例(总觉得百度不会拖欠工资).注:不过,插入广告程序会稍微卡一些,而且真的很耗流量. (本文并不是照抄百度的文档,会很直白哦) 2.代码部分 首先肯定是注册百度广告联盟的账号,和下载sdk.地址:http://munion.baidu.com/ 第二步,打开eclipse,把里面的jar文件导入库中. 将百度推广的jar包复制到您工程的Libs目录下,并按如下步骤将其导入

android技巧:如何在android程序中执行adb shell命令

package net.gimite.nativeexe; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLExc

【android-tips】SurfaceView的制作android游戏框架介绍

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍       我们知道android游戏主要包含两方面.一方面是控制类,这个通过一些循环以及监听机制来实现.另一方面就是显示类.在现实类中最常见的就是view,view的机制比较适合刷新比较慢的应用,像是象棋之类的.本文要提到的SurfaceView是继承自view类.surfaceview的好处是可以随意控制对象的位置,大小等属性,最关键是的提供了SurfaceHolder类,使用getHolder

Android技巧分享——如何用电脑下载在Google play中应用的apk文件

  [Android技巧分享系列]    1.Android技巧分享--让官方模拟器和genymotion虚拟机飞起来    2.Android技巧分享--如何用电脑下载在Google play中应用的apk文件      Google Play上的应用是官方的,无第三方修改的应用.我们一般只在手机上用Google Play下载或是更新应用.    要是我们想下载的应用不是本区的或是不兼容我们的设备,Google play不让我们安装怎么办呢?    只好把应用下载到电脑里咯~    1.首先你

【ANDROID游戏开发之四】基础的ANDROID 游戏框架(一个游戏角色在屏幕行走的DEMO)

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/298.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读:

Android游戏框架LGame的引入详解介绍

框架下载地址:http://code.google.com/p/loon-simple/downloads/list 下面就讲解下项目中怎么引入游戏框架LGame: •新建android项目"LGameTest1",在项目根目录下新建文件夹libs,将下载的LGame框架的jar包放到该文件夹下,然后在Eclipse中右击项目,选择"Build Path->Configure Build Path-->Add External JARs-"选择刚才放到l

android技巧:android中如何使用string.xml

1.介绍 在制作android应用的时候,常常用到很多string,就是一些文字,这里介绍一种方法,将所有string封装在一个string.xml文件中,通过styles.xml控制string的大小等属性.在代码中,只要调用string的id即可.这样符合面向对象的编程思想,而且也能使android应用更好的适应各种分辨率的手机! 2.具体实现 首先,我们在value文件夹下建立string.xml用于存放string,建立styles.xml用于控制string的属性.(无视其他xml)

基于 SurfaceView 详解 android 幸运大转盘,附带实例app

基于 SurfaceView 详解 android 幸运大转盘,附带实例app       首先说一下,幸运大转盘,以及SurfaceView是在看了也为大神的博客,才有了比较深刻的理解,当然这里附上这位大神的博客地址:博客地址,有兴趣的话你可以去看看,里面有很多的例子.至于我为什么要写这篇博客?,原因之一:加强自己的理解,原因之二:大神的博客就是大神的博客,跳转的太快,基础不好的,很难理解.还有就是一天在实验室太无聊了,没事写写东西.这里我再来更加基础的分析一下.写的不好,原谅.有什么写的不对

Android UI技巧(一)——Android中伸缩自如的9patch图片切法,没有美工自给自足

Android UI技巧(一)--Android中伸缩自如的点9图片切法,没有美工自给自足 相信大家对.9 图片应该都很熟悉吧,有些人可能自己都会了,此篇献给那些不会的同学,咱们一起来聊聊.9图片的切法 一.分辨率 其实相对于Android和IOS两大平台来讲,Android的适配问题一直是大家工作上的一个大问题,这里,我做了一个分辨率的对照表,大家先来连接一下这个简单的东西吧 当然,现在2K的屏幕都出来了,不过这个咱不管哈 二.点9切图法 上面了解了大致的分辨率,我们就来切图了,所谓的.9图就