Android游戏开发基础和经验是本文要介绍的内容,主要是来了解并学习Android游戏开发的内容实例,具体关于Android游戏开发内容的详解来看本文。
做一个类似俄罗斯方块的android游戏开发,游戏完全又触屏来实现还有音乐播放等等一些基本的功能,游戏是基于
android
sdk1.6完成。由于初识android,这个游戏也是本人第一个android游戏开发,所以还有很多不足,这里只是想分享一下在开发过程中一些自己总结的经验和小技巧,希望对新手有所帮助,高手也请不吝赐教。
一、首先我们应该知道android游戏开发的一些基本框架。
Android游戏开发中首先是View类开发框架。在Android游戏开发中,任何一个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);
三、关于自适应屏幕分辨率的问题
Android游戏开发中每款手机分辨率的不同注定是程序员开发游戏必须考虑的问题,怎样才能写一个程序而达到可以在不同分辨率的机子上运行良好,这将是决定一个游戏好坏的重要因素之一。在游戏资源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;
通过以上代码可以获得当前机型的屏幕像素,然过比列换算可以实现代码中坐标的灵活应用。
四、如何锁定屏幕是横屏还是竖屏
一款游戏通常不会设计成横屏竖屏都可玩,会固定成横屏或竖屏。Android游戏开发中只需在AndroidManifest.xml里面配置一下就可以了,加入这一行
- android:screenOrientation="landscape"
例如(landscape是横向,portrait是纵向)。
五、view与view之间的跳转
Android游戏开发中一个游戏不会只有一个view,比如欢迎动画,游戏画面,菜单页面等等,如何实现它们之间的跳转,这里有一个方法,就是用Handler类实现。直接看代码:
- Handler myHandler = new Handler(){
- public void handleMessage(Message msg){
-
if(msg.what == 1){
- //控制页面的显示...
- }
-
if(msg.what == 2){
- //控制页面的显示...
- }
- }
- };
然后用:myHandler.sendEmptyMessage(1)来实现切换。
分享到:
相关推荐
《Android框架浅谈》 **一、Android系统框架概览** Android系统框架是构建于Linux内核之上的,为移动设备提供了一套完整的操作系统环境。它由一系列的组件和服务构成,包括应用程序框架、运行库、应用程序、Linux...
### 浅谈Android移动开发程序员的职业发展之路 随着信息技术的快速发展与智能手机的普及,移动应用开发成为了一个备受关注的领域,而Android作为全球最大的移动操作系统之一,其开发人员的需求量也在逐年攀升。本文...
【Android开发环境搭建】 在移动应用开发领域,Android是最受欢迎的操作系统之一,占据了智能手机市场的主导地位。...在学习和实践中,理解这些基础环境的搭建过程有助于开发者更好地理解和掌握Android开发。
### 浅谈Android的Selector背景选择器 #### 一、引言 在Android开发中,为了提高用户体验,经常需要对控件的外观进行定制化处理,特别是在不同的交互状态下展示不同的视觉效果。`Selector`作为Android中一个非常...
4. **教学内容与任务**:课程内容围绕实际工作流程设计,通过典型工作任务,如“美图相册APP”的开发,将学习内容分解为多个阶段,涵盖Android开发的关键技能和知识点。 5. **教学方法**:采用任务引领、情境教学,...
在Android应用开发中,界面设计是至关重要的一个环节,而布局(Layout)是构建用户界面的基础。本文将深入探讨Android的五大布局,包括线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout...
总的来说,高职高专院校Android应用开发课程的教学方法应注重激发兴趣、精选教材、强化实践、巩固基础和个性化教学。只有这样,才能培养出符合市场需求的高素质Android开发者,为学生的未来职业生涯奠定坚实的基础。
《浅谈司法鉴定中Android手机的解锁及镜像》 随着科技的进步,手机已经成为了我们生活中不可或缺的一部分,其中蕴含的大量个人信息使得手机在司法鉴定中成为电子数据取证的关键环节。尤其是Android系统的普及,使得...
综上所述,基于Android的移动地理信息采集系统建设涉及到了Android开发技术、GPS定位、空间数据处理、GIS应用开发、数据库管理和多媒体数据集成等多个方面。通过这些技术的综合运用,可以构建一个功能完善的移动GIS...
"浅谈 Linux 操作系统基础知识" Linux 操作系统认知 操作系统(英文名简称为 OS)定义:操作系统是用户与计算机硬件之间的界面,是控制、管理计算机系统内各种硬件和软件资源,有效地组织多种程序运行的程序集合。...
1. 《Android编程入门:从零开始开发真实世界的应用》:提供基础的Android开发教程。 2. 《Android应用开发:基于现代架构》:介绍高级的Android开发技术,如MVVM架构。 3. 《用户体验设计基础》:帮助学生理解并...
在Android开发中,设计模式可以帮助我们创建更加灵活、可维护的代码结构,应对不断变化的需求。 2. 代码重构的必要性 代码重构是为了改进软件的内部结构,而不改变其外部行为。随着应用程序的发展,代码可能会变得...
在Android开发领域,理解并应用合适的架构模式对于创建可维护、可扩展的代码至关重要。本文将深入探讨两种常见的设计模式——MVC(Model-View-Controller)和MVP(Model-View-Presenter),并结合实际的TestMVP项目...
这篇“【菜鸟谈android】(二) android基本概念及处理过程”可能会深入浅出地介绍Android开发的一些核心要素。虽然没有具体的描述内容,但从标题我们可以推测文章可能涵盖了以下几个方面: 1. **Android系统架构**:...
在家庭领域,广电运营商有机会整合电视互联网入口、游戏平台入口和智能家居入口,利用智能终端实现这些优势资源的整合。 2. 业务功能要求: - 基础业务融合:终端应支持广播和点播等传统业务,同时考虑原有业务的...
Java的Servlet和JSP技术是开发Web应用程序的基础。Servlet处理HTTP请求,而JSP则用于创建动态网页。现代Web框架,如Spring Boot和Play Framework,进一步简化了Web应用的开发流程。 四、移动应用开发 Android操作...
Android中的ClassLoader机制是Java应用程序运行的核心组成部分,它负责查找并加载类文件到Java虚拟机...理解ClassLoader的工作原理对于Android开发人员来说至关重要,尤其是在处理性能优化、安全问题和系统扩展性时。
在Android开发中,软硬件巧妙整合是至关重要的,它直接影响着设备的性能、用户体验和产品的差异化。Android系统基于Linux内核,它的软件堆层架构包括底层内核、系统库和服务层,以及应用程序层。开发者主要在应用...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,无需启动外部浏览器。WebView使用WebKit渲染引擎,这是一个高效的、开源的网页呈现系统,为用户提供类似于现代浏览器...