android3d游戏开发技术宝典
① Android核心技术与实例详解的前 言
Android是Google于2007年11月推出的一款开放的嵌入式操作系统平台,由于其完全开源的特性,Android正以空前的速度吸引着大批开发者的加入。为了帮助众多的软件开发人员尽快地掌握Android平台的相关知识,尽快地步入实际项目的开发中来,作者根据多年项目开发经验编写了此书。
本书既介绍了Android应用程序基本框架,也对Android平台的各种控件进行了讲解,还通过三个真实案例向读者介绍了Android应用程序完整的开发步骤。通过本书读者可以尽快地掌握在Android平台下进行开发的相关知识。
本书特点
1.内容饱满,由浅入深
本书内容既包括Android平台下开发的基础知识,也有项目编程的实用技巧,还提供了多个真实案例供读者学习。本书在知识的层次上由浅入深,使读者可以从Android的门外汉平稳、快速地步入Android开发的殿堂。
2.结构清晰、语言简洁
本书中所有案例都是按照笔者的实际开发过程进行介绍的,同时也是按照真实项目的开发流程进行的,结构清晰,语言简洁,便于实际练习。为了帮助读者更好地理解相关知识点,全书穿插了很多实用技巧及温馨提示。
3.实用超值的光盘
为了帮助读者更好地掌握与实践Android平台下应用程序的开发,本书附赠DVD光盘一张,其中包括案例的多媒体视频、电子教案(PPT)和实例源代码等。
4.实际商业案例
本书最后的三个案例都有实际商业价值,如果进行开发,价格要数万元,笔者将其完整地展现给了读者。
本书内容导读
本书共分三篇,第一篇介绍了在Android平台下进行应用程序开发的基本知识,主要对Android应用程序框架及用户界面的开发进行了介绍。章 名 主 要 内 容
第1章 Android开发起步 简要说明Android平台的来历及其特性,同时介绍了在Android平台下开发用户界面的基本知识
第2章 Android应用程序的构成 对Android平台下的应用程序构成进行了介绍,同时还介绍了应用程序基本组件(如Activity等)的相关知识
第3章 Android布局管理器 初步介绍Android平台下用户界面的开发,主要对布局管理器(如线性布局等的用法)进行了介绍
第4章 Android常用基本控件 介绍了Android平台用户界面中基本控件(如按钮和文本框等)的特性及其用法
第5章 Android常用高级控件 继续上一章的内容,对Android平台用户界面中的高级控件的相关知识和用法进行了介绍
第6章 菜单与对话框 介绍了Android平台选项菜单、上下文菜单和子菜单等的相关知识,同时还将各种对话框的用法进行了详细的介绍
第7章 Android事件处理模型 对Android平台下用户界面开发中常用到的事件处理模型进行了介绍
第二篇介绍如何在Android平台下进行高级应用程序的开发,包括游戏和基于OpenGL ES的3D应用程序的开发,以及与针对手机特性和网络服务程序的开发。
章 名 主 要 内 容
第8章 游戏与3D应用程序开发 向读者介绍了在Android平台下进行游戏开发的相关知识,同时还对Android平台下3D应用程序的开发进行了初步介绍
第9章 消息广播与服务 对Android平台下基于Intent的消息广播机制进行了介绍,同时通过一个比较大的案例说明Service组件的用法
第10章 网络与数据处理 简要介绍了在Android平台下进行网络编程的相关知识,同时还对Android平台下的SQLite等数据处理机制进行了介绍
第11章 手机通信功能开发 通过实例对Android平台下基于手机通信功能(如打电话、发短信和E-mail)的开发进行了介绍
第12章 手机特有Feature开发 介绍了如何基于Android平台对手机的特性进行开发,如改变壁纸、控制手机振动和音量等
第13章 桌面组件与多媒体数据采集 简单介绍了如何在Android平台下开发包括快捷方式和实时文件夹等在内的桌面组件的流程,以及如何在程序中对多媒体数据(如音频和图像)等进行采集的步骤
第14章 传感器应用的开发 对Android平台下传感器的相关知识进行了简单介绍,并通过案例来讲解开发基于传感器的应用程序的步骤
第15章 Google服务 介绍了在应用程序中与Google提供的如Google Map等网络服务进行混搭的开发步骤
第三篇以三个比较大的案例来说明Android平台下大型应用的开发流程,通过这三个案例的讲解,读者对Android开发将会有更深层次的理解。
章 名 主 要 内 容
第16章 Android游戏开发实践——快乐数独 介绍了手机游戏《快乐数独》的开发,通过该案例向读者介绍了在Android平台下进行游戏开发的相关知识和基本流程,并对游戏开发中的编程技巧进行了介绍
第17章 Android地图搜索应用——美食天下 介绍了地图搜索应用《美食天下》的开发,该应用包括Web端和Android手机端,通过该案例向读者介绍了在Android平台下开发大型应用的基本步骤
第18章 Android社交分享平台——口袋微博 介绍了社交分享平台《口袋微博》的开发,该平台包括Web端和Android手机端,通过该案例向读者介绍了基于客户端/服务器模式的网络应用程序开发的基本步骤
本书面向的读者
本书的内容十分详细,几乎涵盖了Android相关的所有技术,并向读者介绍了真实项目的开发流程,主要面向以下读者。
Android初学者:本书详细介绍了Android的基础知识及各种控件,并对Android平台下3D程序的开发进行了介绍,Android初学者通过本书可以快速、全面地掌握Android平台相关知识,快速地步入Android开发人员的行列。
有一定Java基础且希望学习Android开发的读者:Android平台下的开发基于Java语言,有一定Java基础的读者通过阅读本书的前半部分便可快速地掌握Android的各种组件及基础控件,然后通过三个真实案例的学习迅速地掌握Android平台下的应用程序开发。
在职的开发人员:本书中的案例都是作者精心挑选的,其中涉及的相关知识均是作者多年来积累的编程经验及心得体会。具有一定开发经验的在职开发人员可以通过本书进一步巩固Android的基础知识,并迅速成为高级的Android开发人员。
本书作者
吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java的开发,有十多年的Java开发与培训经验。主要的研究方向为手机游戏、Java EE、搜索引擎,现为手机游戏、Java EE独立软件开发工程师,同时兼任Sun授权Java培训中心认证教师。为数十家着名企业培训了上千名软件开发人员,曾编写过《Java SE 6.0编程指南》、《30天学通Java Web项目案例开发》、《Java程序员职场全攻略:从小工到专家》、《Android 2.0游戏开发实战宝典》等畅销技术书籍。2008年开始关注Android平台下的应用开发,并开发出一系列优秀的Android应用程序。
索依娜,毕业于燕山大学,从业于计算机软件领域9年,在软件开发和计算机教学方面有着丰富的经验。工作期间曾参与省级科研项目2项、市级科研项目1项、发表论文多篇;同时为多个厂矿,企事业单位设计、开发了信息管理系统;从2008年开始关注Android平台下应用的开发,参与开发了多款手机娱乐应用。
另外,昊燃、方振宇、陈冠佐、傅奎、陈勤、梁洋洋、毕梦飞、陈庆、柴相花、陈非凡、陈华、陈嵩、承卓也参与了本书的编写。在此表示感谢!
本书在编写过程中得到了唐山百纳科技有限公司Java培训中心的大力支持,同时 于庭龙、魏鹏飞、王海峰及作者的家人为本书的编写提供了很多帮助,在此表示衷心感谢!
由于编者的水平和学识有限,且书中涉及的知识较多,难免有疏漏之处,敬请广大读者朋友批评指正。
编者
② 新手刚刚学习android,推荐android开发的入门教程
学习android注意事项:
1,android技术准备实训目标:通过这部分的学习,学员能够达到学习android开发课程的基本要求。熟练使用Java语言,实现GUI桌面应用程序的开发JDK的安装和配置开发工具Eclipse3.4安装。实训知识点: Java标识符、数据类型流程控制、面向对象编程、继承、抽象类、接口、包、异常、IO流、Swing、游戏算法介绍
,2,android入门实训目标:通过这部分的学习,学员具备了android程序开发的能力,能独立完成常用的应用软件。实训知识点: Android系统概述和内置工具、Android 开发环境的搭建和启动模拟器、建立android工程、Android应用程序开发及运行编译结构、API参考文档的使用、使用am工具启动android应用程序、部署应用到真实手机、控件和事件编程、菜单编程、对话框编程、视图组编程、各种布局的使用、Grid视图组、List视图组、使用Tab组织UI
,3,android进阶实训目标:通过这部分的学习,学员的android开发能力会有大幅提高。等传感器编程、android优化和性能提高。实训知识点及案例分析:Service概述、创建和启动、生命周期、权限及跨进程调用;广播的概念及生命周期、广播发送的权限广播接收器的实现、接收SMS短信、播放MP3;内容提供器的概念作用和常见接口、使用内容提供器实现增删改查、内容提供其权限和创建内容提供器、SQLite数据库添删改查操作、使用list视图组显示数据;Widget概念和制作方法、Widget各种XML描述文件详解2D图形图像及文本、Gallery UI编程、GridView编程、OnDraw编程、drawable编程基本动画编程技巧、Tween动画、Frame动画、TimerOpenGL ES的2D和3D绘图GPS服务、GPRS网络使用、android蓝牙开发、android方向、加速表、光线、磁场、临近性、温度
4,项目实战实训目标:本阶段让学员开发,设计Android网上购物系统,其中包括Android图形界面开发,Android声音,Android网络通讯,和服务器后端进行通讯交换数据。
Android基础知识:
一、Android开发的分类:
1、Android客户端应用程序
如新浪微博、网银客户端、凡客、淘宝客户端,快盘客户端。Android在这里的应用还是界面层的东西为主。核心还在WEB。客户端界面很重要,用户体验度很重要。从应用需求上来讲,几乎大一点的网站,都需要有手机客户端程序。
2、Android通用类程序
如基于LBS(基于位置的服务)的应用 (这类一般会嵌入到客户端应用程序中),流媒体播放应用。由于移动设备的方便便捷、3G、4G网络的发展,这类应用有不错的前景。
3、Android游戏开发
需要掌握的游戏引擎LGame,游戏框架等。手机上的游戏会是一大块内容,有前途。
4、Android底层开发
需要掌握C、Linux等较底层的东西,发展方向应该是驱动、协议开发,嵌入式开发。
开始学习了解一般从界面、控件开始,这也是大部分人认为简单、比较快上手的原因。学习一段时间后,自己可以定一个方向发展。
二、Android学习需要哪些知识点
1、Java基础知识
J2SE:Java基础类(lang包,IO包,util包(集合框架),面向对象,多线程,网络编程)
2、J2EE知识
如果你想从事的Android客户端应用程序的开发,这部分知识是必备的。显然Android客户端只是做的数据的请求、展现,所需的数据在服务器端。
技能点:Tomcat(Weblogic),XML解析,JSON解析,JSP/Servlet。了解SSH。
3、Linux、C语言知识
可以作为你后续发展需要了解的。
在论坛上、QQ上看到不少童鞋Java基础还比较欠缺,就开始搞Android了,当然就问题多多。学习热情可嘉,但需要打一个好的基础,有一个好的学习路线。
三、Android学习比较好的资料
1、应该说现在市面上的书,入门的还是不少,但一般现在只讲了简单控件的单个用法。
《Android开发范例大全》,《Android应用开发详解》可以参考。想了解游戏的话,可以参考《Android2.0游戏开发实战宝典》。
2、Android学习视频,也基本上停留在讲简单入门,单个控件用法为主,这方面远不及Java,J2EE,SSH的视频那么丰富。应该讲,你看完了这些,离开发还有很大一段距离。而且,这些视频在讲课方法上不如一些Java的好。现在的视频资料太丰富,从哈佛、斯坦福的课程,到IPHONE开发课程,都有。但全部跟着视频完成所有的学习,有很长一段跟要走。
3、Android的论坛比较多,论坛的缺点就是什么东西得自己一个个查找、去等。自学是一个艰苦而漫长的过程。对你的锻炼和提升也最大。自学有一个缺点,就是容易迷失方向,一个知识点你永远不知道要掌握多深,相关的应用是什么。自学就好比像你一个人在走一条目标很远,前面叉路很多的暗道一样。
4、培训机构学习。如果你时间上允许不失为一种好的选择,可以快速入门。互联网产品(时代)有一个重要特点,就是拿资金换时间。如果能快速入门,到这个行业去发展,就比自己慢慢学习要好得多。毕竟现在Android开发太热了。对开发人员的要求也会逐渐提高。(如既要求能做Android开发,又做IPHONE移植开发)。
③ 手机上的游戏是怎么制作出来的
手机游戏制作就是从游戏创意到成为商业产品的全过程。除了前期的市场调研外,整个游戏制作流程大致分为策划,美术资源制作,程序开发等几个阶段:
一、游戏策划就像编剧和导演一样,要规定游戏的世界构成,规定种族、气候,安排什么地方需要出现怪兽让玩家觉得刺激好玩,需要设计各种各样的武器和装备吸引玩家等等。专业点讲就是要设计游戏的背景故事,世界观,大陆布局,规则玩法,剧情对白,游戏任务,各种数值等等;
④ 请问一下游戏编程入门看什么书好
我经常被问及:一个具有很少甚至没有编程经验的人要如何开始游戏制作。直到目前为止,我总是尽我所能一个一个解答。然而,问题的数量已经增长到了一个难以处理的水平,于是,我便决定把所有的建议汇总在一篇文章里作为参考提供给人们。
这篇文章主要面向那些想开发自己的游戏,但仅有一点点或没有半点编程经验的人们。实际上,我也假定读者根本没有任何的编程知识。我将把重点放在游戏开发的编程和设计方面,而不是艺术方面。我也不准备对游戏行业进行论述(因为这个话题的资料太多了),但是,我会带你浏览一下在制作游戏之前需要做的一些事情。该说明的一点是,不要将我这里所介绍的方法当作唯一的或最好的学习游戏制作的路径,但对于我和其他人来说,它是有效的。
1、选择一门语言
第一件要做的事就是选择一门语言。你有一大堆的选择,包括 Basic、Pascal、C、C++、Java 等等,同样也有一大堆关于哪门语言最适合初学者的争论。欲了解各种语言的优缺点,请参阅 John Hattan 的绝妙文章《我该使用什么语言》。
我这里建议使用 C 和 C++。有些人认为这些语言对于初学者来说太难了,但从我个人角度来说我是反对这个观点的,因为我自己就是从 C++ 起步的。另外,C/C++ 是目前最广泛应用的语言,因此,你能找到大量的资料和帮助。至于先学 C 还是先学 C++ 的问题不大,因为一旦你学习了其中一种,再学习另外一种就没太大问题了。不过,如果你一开始就选择 C++,请确信在学习面向对象编程之前,你已经了解并掌握了面向过程编程。(比如说,如果你在不使用类的前提下仍无法编好程序,先不要急于学习类)
如果你发现学习 C/C++ 是一件很困难的事,不要紧,回过头选一门比较简单的语言来学,比如 Basic 或 Pascal。不过我认为,如果你坚持下去,并找一些好的资料,学习 C/C++ 的问题不大。
你的下一个问题是:我如何学习 C/C++?我很高兴你问这个问题。最好的方法是去听课。有没有老师帮助解答问题,对于你的发展影响巨大,而且编程作业将确保你确实掌握了所学的东西。
如果听课不在你的考虑范围内,下一个最好的办法就是找一些好书。不要把注意力放在那些“大全”书上,因为你终究会买几本。我建议你去一个本地书店,花点时间浏览一下介绍 C 和 C++ 的书,直到找到你能理解并能从中学到东西的一本。同时,你可能还想买几本进阶书或是一本参考书,但一旦你具有了这门语言的部分知识,你会对你需要什么有更好主意。可以在网站BOOKS频道中找到一些建议。
在此,我简要的说明一下我见过的很多入门程序员,尤其是年轻人关心的事情:没有钱买书或其他东西。首先,有许多资源是免费的,包括图书馆和 Macmillan Computer Publishing (他们的网站www.mcp.com 上有数百本编程的书)。其次,如果你想成为一名优秀的程序员,你不得不考虑在这上面的投资。利用各种手段(合法的 ;<)去弄点钞票来。
网络上有大量的 C 和 C++ 的学习教程,但是我认为这些教程作为你学习书本的参考要比作为单独的材料好得多。
2、选择合适的编译器
你写的程序,或源码是以文本文件存储的,你甚至可以用记事本来写 C/C++ 程序。但是,必须有样东西能把这些源码转化成一个可执行文件。对于 C 和 C++ 来说,这样东西就是一个编译器。
现在有大量的编译器存在,其中有许多是免费的。选择一个合适的编译器是非常重要的,而免费编译器有个好处就是你能一个一个的试,看哪个你最喜欢。但是,免费编译器经常是比商业编译器功能少或缺少良好的技术支持。幸运的是,大多数商业编译器都有与完整版功能相同,但价格便宜许多的介绍版或学习版,唯一的限制是,你不能发布使用该编译器开发的程序(这点你肯定维持不久)。
基本上,你选择什么样的编译器取决于你能花多少钱、你将在什么操作系统和平台上开发程序。如果你准备为 Windows 作贡献,我强烈建议使用微软的 Visual C++。它具有一个功能强大的开发环境,能让你倍感轻松,再也没有其他编译器能比它更适合开发 Windows 软件了。如果你是名学生,你可以以极低的价格获得一份拷贝。如果你准备在 DOS 下开发程序,你最好使用免费的 DJGPP。
3、选择一个目标平台
虽然你可能最终会为各种平台开发程序,你还是应该选择其中之一进行学习。当你学习语言的时候,在没进入图象编程之前,你大概想使用一个非 GUI 的操作系统,比如 DOS 或 UNIX。这有助于你将注意力集中在语言学习上,从而避开一些高层的问题,如 Windows 编程。
不过,一旦你准备开始制作游戏,你就该考虑转换你的
目标平台了。一下是几个常用的平台:
Windows:如果你想在游戏行业里专职工作,或者你想让一大群人玩你的游戏,那么 Windows 是你的首选。你的目标客户大多数使用 Windows,且这个情况不会很快改变。目前大量的 Windows 游戏使用一种你大概听说过的名为 DirectX 的技术。DirectX 是一个允许你直接操作硬件的程序库,你可以依靠它写出高性能的游戏来。
DOS:DOS 曾经是游戏的主要平台,但这已是昨日黄花。虽然有些爱好者仍然在为 DOS 开发游戏,但是已经没有商业游戏是为 DOS 开发的了,而且, DOS 正由于微软停止对它的支持而走向衰败。如果你刚开始做游戏,别选择 DOS,如果你已经这样做了,不要再停留了。注意:因为有很多游戏编程的书是为 DOS 写的,学习这些书时可能会认为在 DOS 里开发游戏有理有据。但是,随着 Windows 游戏编程书籍数量的增长,这种争论变得越来越少,也越来越没有意义。
Linux:Linux 是 UNIX 的一个变种,由于它具有稳定、便宜、反微软情节等多个因素,它正变得越来越受欢迎。虽然目前的 Linux 用户还比较少,但是随着它的热爱者和市场的潜在增长,它也成为了作为目标平台的可行选择。
Macintosh:苹果机拥有一群数量不多但非常忠诚的追随者,几乎每个我见过的苹果机爱好者都有一个强烈渴望更多苹果机游戏的愿望。我没有看过多少在苹果机上开发游戏的资料,但我确信确实有,因此,这也是个合理的选择。
家庭游戏机:游戏机(如 Playstation、N64、Dreamcast 等等)游戏市场非常巨大,前景可观。然而,由于种种原因,开发非商业性的游戏机游戏在目前来说是不太可能的。你为游戏机开发的游戏大多都会被商业游戏公司买走。
4、充足电
是讨论真正做游戏的时候了。虽然我所说的大部分内容适用于其他语言,为简单起见,我将假定你选择了 C/C++ 来进行 Windows 编程。
首先,在你考虑如何开始做游戏之前,你应该能很好的掌握 C 和 C++。你应该了解并精通指针、阵列、结构、函数,以及类等。做到了这一点,你就可以开始制作游戏了。
本文无法教授你关于制作游戏所该了解的一切。幸运的是,这也不是必要的。有很多关于这方面的书,网上也有数以百计的教程。GameDev.net 应该会有目前你所需要的一切。下面是我对你起步的一些建议:
学习一本或几本书。对于 Windows 游戏的初学程序员,《Tricks of the Windows Game Programming Gurus 》是一本极好的Windows编程入门教程。在这个站点里拥有许多本站 Books section 里所列出的好书。阅读这些书籍,运行所有的例程,反复研读你不理解的章节。
使用网上教程补充书本的不足。网上教程除了阐明一些你阅读的东西外,通常也会包含一些书本上没有涉及的主题。
找专家进行咨询。如果你无法从书上或教程中找到答案,到本站的留言版或聊天室来,这里有许多乐于提供帮助的人。
不要把上面几点当成是个有序的过程,而应当看作是一个循环往复的并行过程。
仅仅是学习、思考是远远不够的,你应当把你所学的东西付诸实践。从一个简单的游戏开始,逐步发展。你可以阅读一下 Geoff Howland 的文章《How do I Make Games? A Path to Game Development》。
首先,为自己的工作制定一个计划。不要急于加入一个团队,因为那只会减缓你的学习进程。当你囊中拥有数个游戏时,你将为一个团队作出更大贡献。
关于书本,有件事我要提醒一下:你需要阅读除了游戏编程外的其他书籍。为了制作出你在商店货价里看到的各种游戏,你将不得不钻研那些比大多数游戏编程书籍所授内容更高深的话题。有些可能你能从教程中找到,但是,你还是有必要买几本关于图形、人工智能、网络、物理等等方面的书。这是获得计算机科学学位的必经之路,因为你将被要求学习一些你认为与游戏编程无关的课程,而实际上它们是相关的。
5、总结
这里有一些能产生巨大差别的技巧:
要只知道聚集知识,应用是关键。除非你使用了,否则你无法确实知道和理解这些东西。做一些小的测试程序来应用你所学的东西,并切实完成书上每个章节后的习题。
玩大量的游戏。你会因此找到灵感,从而帮助你制作更优秀的游戏。当然,这也是一种受欢迎的解除编程压力的调剂方式。
帮助别人。在你帮助别人的过程中,你会学到更多东西。
完成你的作品。不要陷入这样一种思想的圈套中:“我知道我可以完成这个游戏,但是我有个更好的主意,我要换做这个好的项目。”如果你能坚持有始有终,你会学到更多的东西,并且你有作品证明你不仅仅是空谈。在你具有丰富的经验之前,做得简单一点,不要尝试制作一个又大又复杂的游戏。
出发吧!你该动手制作 Quake 4 了。当然,可能不那么容易,但至少你可以从这个方向出发,并且知道去哪里查找更多的信息。经过多年的努力工作,你会成功的!