`
ictch
  • 浏览: 135447 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android 游戏开发的一些基础和个人经验

阅读更多

      大家好,很高兴可以在这里给大家介绍一些android游戏开发的基础知识。首先我想说的是,本人也只是一个刚出道的手机开发程序员,接触android 还没到两个月的时间。在此期间做了一个类似俄罗斯方块的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)来实现切换。

分享到:
评论

相关推荐

    Android游戏开发PDF

    在Android平台上,游戏开发已经成为一个繁荣的领域,吸引了众多...以上就是Android游戏开发的一些基础知识,涵盖了从环境搭建到发布的全过程。通过不断学习和实践,开发者可以创建出富有创意和吸引力的Android游戏。

    android游戏开发实战宝典与3D游戏开发教程.7z

    《Android游戏开发实战宝典与3D游戏开发教程》是一份综合性的学习资源,涵盖了Android平台上游戏开发的多个重要方面。这份压缩包包含了两部分核心内容:《ANDROID_2游戏开发实战宝典》和《Android_3D游戏开发教程》...

    android开发揭秘PDF

    5.1 Android游戏开发框架 5.1.1 View类开发框架 5.1.2 SurfaceView类开发框架 5.2 Graphics类开发 5.5.1 Paint和Color类介绍 5.2.2 Canvas类介绍 5.2.3 几何图形绘制 5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像...

    一个自己开发的android游戏小应用

    Android游戏开发是一个涵盖了多个技术领域的综合性工程,涉及到程序设计、图形渲染、用户交互、网络通信等多个方面。在这个“一个自己开发的android游戏小应用”项目中,开发者通过学习和实践,成功地创作了一款游戏...

    android游戏开发源码

    4. **游戏框架**:在"android游戏开发源码"中提到的案例,可能使用了一些常见的游戏框架,如libGDX、Cocos2d-x或Unity。这些框架简化了游戏开发过程,提供图形渲染、物理引擎、音频管理和资源管理等功能。 5. **2D...

    android高级游戏开发及源码

    首先,Android游戏开发的基础知识是必不可少的。Android平台使用Java语言进行开发,但随着Kotlin的流行,许多现代项目也开始采用Kotlin。本书可能涵盖了如何使用这两种语言进行游戏开发,并介绍了Android Studio集成...

    简单实用的Android游戏开发小框架

    "简单实用的Android游戏开发小框架"便是为个人开发者和初学者量身打造的一款高效工具。它虽然规模不大,但功能全面,能够解决许多在游戏开发过程中可能遇到的系统层面的问题。 首先,让我们深入了解这个小框架的...

    Android游戏开发实践指南

    《Android游戏开发实践指南》是一本专为游戏开发者量身打造的教程,旨在帮助读者深入理解和掌握Android平台上的游戏开发技术。本指南涵盖了从基础知识到高级应用的全方面内容,旨在提升开发者在Android游戏开发领域...

    Android3D游戏开发技术详解与典型案例全

    通过《Android3D游戏开发技术详解与典型案例全》这本书的学习,开发者不仅可以掌握3D游戏开发的基本技术,还能获得实战经验,提升个人技能。书中的22个章节很可能会逐步深入,从基础知识到高级话题,帮助读者全面...

    Android.游戏开发入门

    ### Android游戏开发入门知识点 #### 一、章节概述与...通过以上章节的学习,读者不仅可以获得扎实的Android游戏开发基础知识,还能掌握实际的游戏项目开发经验,为成为一名成功的Android游戏开发者打下坚实的基础。

    精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技)

    在介绍Android游戏开发的知识点之前,首先需要对“精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技)”这一主题进行深入探讨。本教程着重于教授开发者如何将原本开发在个人电脑(PC)上的游戏移植到Android...

    Android手机游戏开发源代码 Java 雷霆战机

    实际操作中,开发者应当不断实践Java基础知识和Android游戏开发基础知识,积累经验,提高解决问题的能力。 最后,游戏开发报告是对整个开发过程的总结和反思。它包括了游戏开发的各个环节,以及最终的开发结果和...

    android游戏开发框架-zgf

    《Android游戏开发框架——ZGF详解》 在Android平台的游戏开发领域,选择合适的框架能够极大地提升开发效率,优化游戏性能。...通过不断学习和实践,你也可以在Android游戏开发的世界里大展拳脚。

    《Android应用开发揭秘》源码

     5.1 Android游戏开发框架  5.1.1 View类开发框架  5.1.2 SurfaceView类开发框架  5.2 Graphics类开发  5.5.1 Paint和Color类介绍  5.2.2 Canvas类介绍  5.2.3 几何图形绘制  5.2.4 字符串绘制  5.2.5 图像...

    Android经典项目案例开发实战宝典源码

    3. **游戏开发**:Android游戏开发通常涉及图形渲染、物理引擎和游戏逻辑。源码可能涵盖2D游戏,例如使用SurfaceView和Canvas进行图形绘制,或者基于Android游戏框架(如libGDX)的项目。开发者能从中学习到游戏循环...

    《Android应用开发揭秘》附带光盘代码.

     5.1 Android游戏开发框架  5.1.1 View类开发框架  5.1.2 SurfaceView类开发框架  5.2 Graphics类开发  5.5.1 Paint和Color类介绍  5.2.2 Canvas类介绍  5.2.3 几何图形绘制  5.2.4 字符串绘制  5.2.5 图像...

    Android2.0游戏开发实战宝典

    一、Android游戏开发基础 Android游戏开发基于Java编程语言,因此熟悉Java语法是首要前提。Android SDK(软件开发工具包)是游戏开发的核心工具,包含了必要的API库和工具,用于构建、调试和发布Android应用。此外,...

    Pro Android Games----精通Android 游戏开发

    - **技术趋势**:探讨未来Android游戏开发领域可能出现的新技术和方向,帮助开发者把握行业动态。 - **职业规划**:针对希望在游戏开发领域深耕的读者,提供职业发展建议,助力个人成长。 通过上述知识点的详尽阐述...

    游戏开发教程系列书籍整理 iOS Android Unity3d flash网页游戏 移动应用 端游.pdf

    本系列书籍涵盖了游戏开发的基础理论,包括游戏设计原理、游戏引擎架构、图形渲染技术、物理仿真、动画系统等核心概念,帮助初学者建立起坚实的游戏开发基础。 ### iOS游戏开发 iOS平台因其庞大的用户基数和优秀的...

    Android应用开发揭秘pdf高清版

    5.1 Android游戏开发框架 5.1.1 View类开发框架 5.1.2 SurfaceView类开发框架 5.2 Graphics类开发 5.5.1 Paint和Color类介绍 5.2.2 Canvas类介绍 5.2.3 几何图形绘制 5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像...

Global site tag (gtag.js) - Google Analytics