`
ming_fanglin
  • 浏览: 224980 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 游戏开发基础

阅读更多
游戏完全又触屏来实现还有音乐播放等等一些基本的功能,游戏是基于 android sdk1.6完成。由于初识android,这个游戏也是本人开发的第一个andriod游戏,所以还有很多不足,这里只是想分享一下在开发过程中一些自己总结的经验和小技巧,希望对新手有所帮助,高手也请不吝赐教。

  一、首先我们应该知道android游戏开发的一些基本框架。

  首先是View类开发框架。在Andriod中,任何一个View类都只需要重写onDraw方法来实现界面显示。游戏的核心是不断的绘图和刷新界面,在 Android中最常用的方法是利用Handler来实现UI线程的更新,也可以直接在run方法中使用postInvalidate()方法在线程中更新界面。其次,是SurfaceView类开发框架。当需要开发复杂的游戏,而且对程序的执行效率很高时,View类就不能满足需求了,这是必须用 SurfaceView类进行开发,这也是主流开发框架。在使用时需要对其进行创建、销毁,情况改变时进行监视,这就要实现 SurfaceHOlder.Callback接口,如果要对被绘制的花布进行裁减,控制其大小时都需要使用SurfaceHOlder来完成处理。在程序中,SurfaceHOlder对象需要通过getHolder方法来获得,同时还需要addCallback方法来添加“回调函数”。

  例如下面一个简单的SurfaceView类框架:

  
public class GameSurfaceView extends SurfaceView implements SurfaceHolder.Callback,Runnable {

  SurfaceHolder mSurfaceHolder = null;

  public GameSurfaceView(Context context) {

  super(context);

  mSurfaceHolder = this.getHolder();

  mSurfaceHolder.addCallback(this);

  this.setFocusable(true);

  }

  public void surfaceChanged(SurfaceHolder holder,int format,int width,int height){

  }

  public void surfaceCreated(SurfaceHolder holder ){

  new Thread(this).start();

  }

  public void surfaceDestroyed(SurfaceHolder holder){

  }

  public void run(){

  while (true){

      try{

  Thread.sleep(1000);

  }

  catch(Exception e){

  }

  synchronized(mSurfaceHolder){

  Draw();

  }

  }

  }

  private void Draw() {

  Canvas canvas= mSurfaceHolder.lockCanvas();

  ......

  mSurfaceHolder.unlockCanvasAndPost(canvas);

  }

  }


  然后在activity类中 :setContentView(GameSurfaceView的对象)。

  二、游戏开发中常用到的基本类

  Android中通过graphics类来显示2D图形,graphics中包括了Canvas(画布)、Paint(画笔)、Color(颜色)、Bitmap(图片)等常用类。

  例如绘制字符串用canvas类的drawText方法来实现,drawRect用来绘制矩形,设置透明度可以用paint类的setAlpha,同时 Color.rgb方法可以直接获得整形数值代表的颜色。此外在绘制图片时应该首先从资源文件中装载图片,然后才能绘制到屏幕上去。具体代码如下:
Bitmap mypic = null; mypic=((BitmapDrawable)getResources().getDrawable(R.drawable.pic)).getBitmap(); Canvas canvas = new Canvas(); canvas.drawBitmap(mypic,x,y,null);


  三、关于自适应屏幕分辨率的问题

  每款手机分辨率的不同注定是程序员开发游戏必须考虑的问题,怎样才能写一个程序而达到可以在不同分辨率的机子上运行良好,这将是决定一个游戏好坏的重要因素之一。在游戏资源res下有三个和图片存储有关的文件夹:drawable-hdpi、drawable-mdpi、drawable-ldpi。 drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854),drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480),drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320),系统会自动根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。当然,除了准备好几组不同分辨率的图片以外,在代码中图片坐标和触屏事件的坐标都要灵活的处理,这样才能实现一个程序多机型运行的目标。
  DisplayMetrics dm = new DisplayMetrics();

  getWindowManager().getDefaultDisplay().getMetrics(dm);

  int screenWidth = dm.widthPixels;

  int screenHeight = dm.heightPixels;


  通过以上代码可以获得当前机型的屏幕像素,然过比列换算可以实现代码中坐标的灵活应用。

        四、如何锁定屏幕是横屏还是竖屏

  一款游戏通常不会设计成横屏竖屏都可玩,会固定成横屏或竖屏。只需在AndroidManifest.xml里面配置一下就可以了,加入这一行android:screenOrientation="landscape"。

  例如(landscape是横向,portrait是纵向)。

  五、view与view之间的跳转

  一个游戏不会只有一个view,比如欢迎动画,游戏画面,菜单页面等等,如何实现它们之间的跳转,这里有一个方法,就是用Handler类实现。直接看代码:
  Handler myHandler = new Handler(){

  public void handleMessage(Message msg){

  if(msg.what == 1){

  //控制页面的显示...

  }

  if(msg.what == 2){

  //控制页面的显示...

  }

  }

  };

  然后用:myHandler.sendEmptyMessage(1)来实现切换。
1
0
分享到:
评论

相关推荐

    千锋Android游戏开发基础视频教程(10集)

    教程名称: 千锋Android游戏开发基础视频教程(10集)【】千锋Android游戏开发基础视频教程-大纲【】千锋Android游戏开发基础视频教程01~02【】千锋Android游戏开发基础视频教程03~04【】千锋Android游戏开发基础...

    android游戏开发基础小球运动

    总结一下,"android游戏开发基础小球运动"这个主题涵盖了以下知识点: 1. Android Canvas和Paint的使用,绘制圆形小球。 2. 小球运动的逻辑实现,包括速度、加速度的计算和边界检测。 3. 碰撞检测和物理模拟,如反射...

    android游戏开发基础视频

    http://video.sina.com.cn/playlist/4003320-1320045357-1.html#33844107?Android游戏及应用开发之2? http://video.sina.com.cn/playlist/4003320-1320045357-1.html#33845175?Android游戏及应用开发之3? ...

    Android游戏开发基础和经验.doc

    在Android游戏开发中,开发者需要掌握一系列基础知识和实践经验。本文主要围绕如何开发一个简单的Android游戏,如俄罗斯方块,来探讨关键的技术点。首先,我们要理解Android游戏开发的基础框架。 **1. View类开发...

    Android游戏开发基础飞机大战

    Android飞机大战,全注释,适合学生狗期末答辩,虚拟机真机都好运行

    android游戏开发入门级经典实例

    3. **Android游戏开发基础**:在这些实例中,学习者首先需要掌握Android SDK的使用,包括安装、配置及使用Android Studio。理解Android的Activity生命周期、Intent机制以及布局管理是必不可少的。此外,还要学习如何...

    android应用开发范例精解

    第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计、Android传感器、Android游戏开发基础、Android与Internet,以及...

    android 投篮游戏 源码

    1. **Android游戏开发基础** - Android游戏开发通常基于Java或Kotlin语言,本项目可能采用其中一种。了解这两种语言的基本语法和面向对象编程概念是必不可少的。 - 使用Android Studio作为集成开发环境(IDE),它...

    android,游戏开发圆形碰撞

    一、Android游戏开发基础 Android游戏开发通常基于Java或Kotlin语言,利用Android SDK和相关工具如Android Studio进行。游戏引擎如Unity或Cocos2d-x也是常用的开发平台,但本项目更侧重于原生Android开发。 二、...

    Android3D游戏开发源码

    一、Android游戏开发基础 Android游戏开发主要基于Java或Kotlin语言,利用Android SDK(Software Development Kit)进行。开发者需要掌握Android Studio集成开发环境的使用,以及Android应用程序的基本架构,如...

    AndroidGame初学者游戏开发框架

    一、Android游戏开发基础 Android游戏开发主要是基于Java或Kotlin语言进行的,利用Android SDK(Software Development Kit)中的工具和库来构建游戏。随着Android Studio的普及,它成为了主要的开发环境,提供了丰富...

    Android 3D游戏开发技术宝典

    一、Android游戏开发基础 1. Android SDK与Eclipse/Android Studio环境搭建:介绍如何安装和配置开发者工具,包括JDK、Android SDK以及集成开发环境的选择和设置。 2. Android项目结构与生命周期:解析Android应用的...

    Android2.0游戏开发实战宝典 (1-16章 全)

    2. **Android游戏开发基础**:介绍Android游戏开发的基础知识,包括游戏生命周期、游戏循环和多线程编程。 3. **OpenGL ES**:讲解Android平台上用于图形渲染的OpenGL ES API,包括顶点坐标、颜色、纹理映射等基本...

    安卓Android源码——Android游戏源码——忍者快跑.zip

    1. **Android游戏开发基础**:Android游戏开发通常使用Java或Kotlin编程语言,结合Android SDK进行。这个源码提供了实际应用实例,展示了如何构建一个完整的Android项目,包括项目结构、资源管理、Activity生命周期...

    Android游戏开发技术实战详解

    资源名称:Android游戏开发技术实战详解 内容简介:《Android游戏开发技术实战详解》详细讲解了Android游戏开发...第3章讲解了Android游戏开发的基础知识; 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    android游戏源代码

    【Android游戏开发基础】 在Android平台上,游戏开发主要基于Java或Kotlin语言,利用Android SDK(Software Development Kit)进行编程。Android SDK包含了开发者构建、测试和发布Android应用所需的所有工具,其中...

    Android游戏开发(Beginning Android 4 Games Development.pdf)

    ### Android游戏开发基础知识点 #### 一、书籍基本信息与版权说明 - **书名**:《Beginning Android 4 Games Development》 - **作者**: Mario Zechner 和 Robert Green - **出版社**: Apress Media, L.L.C. - **...

    Android游戏源码切水果小游戏有详细注释.zip

    【Android游戏开发基础】 在Android平台上,游戏开发主要依赖于Java或Kotlin语言,结合Android SDK(Software Development Kit)和Android Studio IDE进行。本压缩包中的"Android游戏源码切水果小游戏有详细注释"是...

    Android打飞机类游戏源码

    1. **Android游戏开发基础**: - **Android SDK**:游戏的基础是建立在Android SDK之上的,它包含了开发Android应用所需的各种工具和库。 - **Java编程语言**:游戏的主要编程语言是Java,这是Android平台官方支持...

Global site tag (gtag.js) - Google Analytics