从零开始学Android.docx
《从零开始学Android.docx》由会员分享,可在线阅读,更多相关《从零开始学Android.docx(68页珍藏版)》请在冰豆网上搜索。
![从零开始学Android.docx](https://file1.bdocx.com/fileroot1/2022-10/29/8780d5ec-7a58-4f67-bc70-054fc57eda8f/8780d5ec-7a58-4f67-bc70-054fc57eda8f1.gif)
从零开始学Android
从零开始学安卓经典教程
本文是入门android的经典教材,文中既有图片直观的展示,又有文字的详细说明,并且给出了相应代码,对于初学者来说是极好的入门材料。
--谨以感谢原作者
什么是OPhone
OPhone是基于Linux、面向移动互联网的终端基础软件及系统解决方案。
OPhoneSDK是专为OPhone平台设计的软件开发套件,它包括OPhoneAPI,OPhone模拟器,开发工具,示例代码和帮助文档(摘自OPhone官方网站:
写作本文的目的
为了普及OPhone编程的基本知识,并通过复刻一个坦克大战游戏让读者了解2D游戏编程的简单思路。
文中的程序结构和实现方法并非最优,希望能起到一个抛砖引玉的作用,让更多的人加入到OPhone开发的行列中来。
谁适合阅读本文
虽然本文叫做“从零开始OPhone编程”,但并不能面对那些对编程一无所知的读者。
实际上,本文要求读者了解java语言的基本知识,最好会使用eclipse。
在文章的每个章节都标有难度,有能力的读者完全可以跳过相对容易的章节直接阅读自己感兴趣的内容。
本文的时效性
本文只适合当前版本的OPhoneSDK(v1.0),本文的代码、图片、链接可能会因时间推移而失效。
第一章搭建开发环境
工欲善其技,必先利其器。
我们要做的第一件事就是搭建Android开发环境。
本文只介绍Windows下的安装方法,Linux下的安装方法请参考官方网站的介绍。
与PC编程略有不同的是,Android的程序需要在模拟器中运行。
因此,我们需要一个集成开发环境,一个SDK和一个模拟器。
因为Android编程使用java语言,所以我们还需要JDK,最好使用安装版本(6Update16Windows版即可。
集成开发环境我们选用eclipse,可以使用eclipse3.3到3.5的任意版本(http:
//download.eclipse.org/eclipse/downloads/)最好下载JDT集成版。
然后我们可以从Android官方网站()下载AndroidSDK(当然,如果你不能翻墙,可以到国内的网站下载),SDK全部安装完毕之后,还需要安装eclipse插件。
插件是用来扩展eclipse功能的。
开发Android用的插件叫ADT(AndroidDeveloperTools),它可以帮助我们完成创建项目,向模拟器部署并运行程序,调试程序等工作。
关于ADT的功能,在后面使用中我们会逐渐熟悉。
安装ADT的方法如下(以eclipse3.4为例):
启动eclipse,选择菜单中的Help->SoftwareUpdates
点击AddSite
点击Archive…
找到OPhoneSDK安装目录下tools\ophone\ADT-0.8.0.zip(因为我已经安装好了ADT,所以出现了重复URL的提示),点击OK即可开始安装
ADT安装完毕后还要简单配置一下,打开菜单中的Window->Preferences
找到Android项,通过Browse按钮指定AndroidSDK的安装位置
至此为止,Android的安装环境就全部搭建完毕了。
下一章节,我们会遇见经典的helloworld,下章见!
第二章创建第一个程序HelloTank
现在开始,我们要真正写作Android程序了。
虽然前面安装过程那么复杂,但是写起程序来却是非常简单。
而且为了让大家有一个直观的认识,本文不会叙述大段的原理,而是在编码的过程中渗透对原理、概念的讲解。
让我们打开eclipse,选择菜单中的File->New->Project…
选择Android->AndroidProject
下面需要我们输入项目的一些信息,因为我们要复刻经典游戏坦克大战,所以我们的程序就取名Tank
这样,一个Android项目就创建完成了,我们可以在eclipse的PackageExplorer看到我们的项目
托ADT的福,虽然我们只输入了几个名字,但这个项目实际上已经可以运行了。
右击项目名,选择RunAs->AndroidApplication
不出意外的话,你会看到一个手机模拟器被启动,而我们刚刚建立的程序会被运行起来
如果你发现模拟器启动了,而程序并没有被运行,可能需要手工启动程序。
这里我们用到一个重要的工具DDMS(DavlikDebugManager)。
运行DDMS快捷方法是点击eclipse右上角的OpenPerspective,如果在弹出的列表中没有DDMS,那么点击Others
选择DDMS
这样我们就打开了DDMS界面,这个工具我们以后会经常用到。
刚刚说到模拟器启动了而程序并没有被运行,很可能是在模拟器启动过程中DDMS失去了与模拟器的链接。
解决方法很简单:
点击Devices标签下的工具栏,选择Resetadb
然后右击项目名称,RunAs->AndroidApplication。
除了右击运行项目,还可以通过工具栏上的运行按钮启动程序
在运行按钮左边的是Debug按钮,这两个我们以后也会经常用到。
现在我们已经有了第一个可以运行的Android,虽然你可能对ADT生成的一堆文件感到一头雾水,也不知道程序界面上那一句“HelloWorld,Main”是从哪里来的,但是没关系,随着本文的深入你会逐渐熟悉Android项目的目录结构,程序设计的原则和方法,以及调试和部署的方法。
现在读者可以自己熟悉一下模拟器的操作,让我们下章再见。
第三章显示文字和图片
从本章开始,读者就要编写代码了。
按照作者的原则——少一些理论,多一些实践,代码中可能会有跳跃的地方。
但是请大家不要着急,随着学习的深入,你很快就会了解其中的奥秘。
不过在开始之前,我们还是要先来理顺一下思路,看看完成一个坦克大战游戏需要哪些工作:
首先,我们需要一个基本的程序,这个程序能够在Android上运行;这个程序要能够显示图形包括地图,主角和NPC等等;程序能够接受用户的输入,控制主角移动;程序要能够控制NPC和子弹的移动;程序还能对各种事件做出判断,比如击中敌人,获得物品,胜利或者失败。
现在我们就从基本程序开始,一步一步实现它。
首先,让我们看一下刚刚生成的文件目录
在源文件目录下,只有Main.java和R.java两个文件,刚刚被我们命名成Main.java的文件就是程序的入口文件。
而R.java是由插件来维护的资源定义文件,我们先不管它。
Main.java内容如下:
packageorg.yexing.android.games.tank;
importandroid.app.Activity;
importandroid.os.Bundle;
publicclassMainextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
很幸运,Main.java的代码非常之少,而且还有一段注释,以致我们很容易知道函数onCreate的作用,需要解释的只是setContentView()。
先不要管注释中提到的Activity和setContentView的参数R.layout.main,我们使用setContentView的另一种形式:
setContentView(Viewview)。
setContentView的作用是设定当前使用的视图即View(依此理解,可以有很多个View,需要用哪个就可以把他作为setContentView的参数显示出来)。
View是一个非常重要的组件,它可以用来显示文字,图片,也可以接收客户的操作,比如触摸屏,键盘等等,而我们的游戏中正是需要绘图和交互,看来View很符合我们的需要(但是请注意,使用View并不是我们的最终方案,原因会在后面说明。
此处介绍View是为了讲解基础的图形和用户控制)。
下面我们就要订制一个属于自己的View,可以通过继承自系统提供的View,并重载相关的函数来实现。
创建类的方法如下:
右击包名New->Class
我们将这个View类命名为GameView,并且由android.view.View继承
点击Finish,一个View类就创建好了。
这里是第一次创建类,以后就不会有图片演示了,请大家记住的这个方法。
GameView创建好了,但是代码还有一些错误,这里介绍一下eclipse的使用技巧,将鼠标悬停在有错误的位置,或者将光标停在有错误的行,然后按Ctrl+1键,就会出现修改建议,大部分时候,使用修改建议都可以改正我们的错误,如图
可以看出来,刚刚的错误是因为没有创建构造函数,选择修改建议的第二项,增加一个构造函数
publicGameView(Contextcontext){
super(context);
//TODOAuto-generatedconstructorstub
}
我们的View就创建好了。
回到Main.java,刚刚说了,只要将View作为setContentView的参数,这个View就可以被显示出来:
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(newGameView(this));
}
现在让我们运行模拟器,看看程序变成什么样子了(启动模拟器的方法见第二章)。
不要意外,屏幕上就是一片空白,因为我们创建了一个View,但是没有让它显示任何内容。
下面我们就会在View上显示一段文字和一张图片。
让View显示内容也很简单,只需要重载View的onDraw函数,把相应的语句写入onDraw中即可。
打开GameView.java,点击菜单Source->Override/ImplementMethod…
选中onDraw点击OK
下面这段代码就会被加入到程序当中,所有与显示有关的代码都会在这里面完成
@Override
protectedvoidonDraw(Canvascanvas){
//TODOAuto-generatedmethodstub
super.onDraw(canvas);
}
这里我们遇到了又一个非常重要的类Canvas,Canvas一般翻译成画布,所有的绘图操作都是通过Canvas中的函数来完成的,比如显示文字的函数Canvas.drawText(),显示位图的函数Canvas.drawBitmap(),以及各种绘制图形的函数如Canvas.drawRect(),Canvas.drawArc()等等。
下面让我们显示一段文字在屏幕上:
protectedvoidonDra