大家好,很高兴可以在这里给大家介绍一些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)来实现切换。
分享到:
相关推荐
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游戏开发技术实战详解 内容简介:《Android游戏开发技术实战详解》详细讲解了Android游戏开发...第3章讲解了Android游戏开发的基础知识; 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
在结束语中,本文总结了游戏开发过程中的主要经验和教训,指出了游戏可能存在的问题和改进空间,并对未来Android游戏开发的方向提出了预测和建议。附录部分提供了更多详细的设计图和代码片段,供有兴趣深入研究的...
通过以上章节的学习和实践,读者将能够掌握从基础到高级的Android游戏开发技能,包括Java编程、OpenGL图形渲染、本地代码编写等多个方面。无论是初学者还是有经验的开发者,都能够从中获得宝贵的知识和经验。
教程名称: 千锋Android游戏开发基础视频教程(10集)【】千锋Android游戏开发基础视频教程-大纲【】千锋Android游戏开发基础视频教程01~02【】千锋Android游戏开发基础视频教程03~04【】千锋Android游戏开发基础...
以上就是Android游戏开发的一些基础和经验。对于初学者,理解并熟练应用这些技术是开发简单游戏的第一步。随着技能的提升,还可以深入研究OpenGL ES等高级图形库,以及游戏物理引擎、AI算法等,以开发更复杂、更具有...
在Android平台上,游戏开发已经成为一个繁荣的领域,吸引了众多...以上就是Android游戏开发的一些基础知识,涵盖了从环境搭建到发布的全过程。通过不断学习和实践,开发者可以创建出富有创意和吸引力的Android游戏。
本文将深入探讨Android游戏开发的基础知识,帮助初学者快速掌握游戏开发的基本技能。 首先,了解Android环境搭建至关重要。这包括安装Java Development Kit (JDK),设置环境变量,以及下载并安装Android Studio,这...
在Android游戏开发领域,尤其是针对飞行射击类游戏和角色扮演游戏(RPG)的全程实战开发,涵盖了一系列的技术栈和流程。下面将详细讲解这个过程中的关键知识点。 首先,Android游戏开发的基础是Java或Kotlin语言,...
在Android游戏开发的世界里,初学者常常需要一个良好的起点来理解和掌握这个领域的基本概念和技术。"Android 游戏开发入门随书光盘的代码"提供了一个理想的资源库,帮助新手们快速进入游戏开发的殿堂。这个压缩包...
《华章程序员书库:Android游戏开发实践指南》中以开源引擎AndEngine为基础,不仅以专题的形式巧妙地将Android游戏开发必须掌握的各项关键技术(场景、图层、图形绘制、精灵、动画、物 资源太大,传百度网盘了,链接...
在Android游戏开发领域,开发者需要掌握一系列技术和工具来创建引人入胜且功能丰富的游戏体验。这份"Android游戏开发大全PPT课件"是专为那些想要深入学习Android游戏开发的人员准备的宝贵资源,涵盖了从基础知识到...
以下是对Android游戏开发的一些关键知识点的详细解释: 1. **Android SDK**: Android Software Development Kit (SDK) 是开发Android应用的基础,包括了开发环境、API文档、调试工具等。对于游戏开发,Android SDK...
以下6个游戏项目提供了丰富的学习资源,涵盖了从基础到进阶的Android游戏开发技术: 1. **Android 美女拼图游戏**:这是一个典型的图像处理和逻辑编程的游戏。开发者可能使用了Android的Bitmap类来处理图片,通过...
"精通Android游戏开发"这个主题涵盖了从基础到高级的各种技术,旨在帮助你成为一名出色的Android游戏开发者。 一、Android游戏开发环境搭建 在开始游戏开发之前,你需要安装并配置Android Studio,这是官方推荐的...
通过学习这些源代码,开发者不仅可以掌握Android游戏开发的基础,还能深入了解游戏设计的各个方面,包括图形渲染、物理模拟、游戏逻辑、资源管理等。这将为他们创建自己的Android游戏奠定坚实的基础。同时,源代码的...
在这一章中,通常会介绍Android游戏开发的基础知识,如设置Android Studio环境、构建游戏项目结构,以及如何使用OpenGL ES,这是Android平台上的主要3D图形库。开发者将学习如何创建基本的3D模型,比如立方体或球体...
- **初学者**:适合完全没有Android游戏开发经验的新手。 - **创业者**:对于希望通过开发Android游戏来进行创业的人士也非常有用。 ### 三、核心知识点概览 #### 1. Android开发基础 - **环境搭建**:介绍如何...
在Android游戏开发领域,"Android Game by ...通过分析"Tappy Defender"项目,读者不仅可以学习到Android游戏开发的基础知识,还能实践如何将理论应用于实际项目,这对于提升编程技能和理解游戏开发流程非常有帮助。
总之,Android游戏开发中的View框架是一个综合性的主题,涵盖了图形绘制、事件处理、布局设计、动画制作和性能优化等多个方面。掌握好这些知识点,能够帮助开发者构建出高性能、富有吸引力的Android游戏。