Ch&*M!
h*1心肝色刽说”泊旳i凸!
that沖u厂』凸凶亡乙豊匕片、&Iiup^rt.LiA^rAPIkw-li;曹H出七“
dfvite-%B0liIfftti-dnS'rw^irfafj.:
u**-.jN-^i*.-r.g”t^rgehrit]APIHjfbd.LE«*rEyou?
r-aeHItpp*"圮i庁工11#孚$覽Of|hfEPk■已
在图7所示的NewAndroidApplication对话框中执行下面的步骤:
1.
Next。
在TargetSDK下拉列表中,选择API17:
Android4.2(JellyBean),然后单击
2.在下一个对话框中,保留默认设置,但是您可以将最终生成的代码放到任意位置。
单击Next。
3.保留ConfigureLauncherIcon对话框中的默认设置并单击Next。
4.保留CreateActivity对话框和最终对话框中的默认设置,这些设置用于选择应用程序的行为。
单击Finish。
如果项目创建成功,您会看到一个新的项目,其用户界面类似图8中所示的界面。
图8.Eclipse中的样例启动项目
在Android模拟器中运行应用程序
默认情况下,使用ADT项目向导创建的Android项目将创建一个简单的HelloWorld移动应用程序(参见图8)。
在开始修饰这个应用程序之前,让我们来看一看在模拟器上运行这个基本应用程序会发生什么。
如果Android4.2模拟器处于关闭状态,请打开它。
这一次不会在AVDManager中启动模拟器,而是通过命令行启动它。
您可以从SDK的tools目录访问
emulator脚本。
在启动脚本时,系统会要求您提供您的模拟器的名称。
我的模拟器的名称为Android_4.2,因此我在清单2中运行脚本来启动我的模拟器实例:
清单2.在命令行中访问模拟器
~/Development/tools/android/android-sdk-mac_x86/tools$>./emulator-avdAndroid_4.2
启动您的模拟器实例,返回Eclipse,然后选择您的项目。
右键单击并选择RunAs>AndroidApplication。
图9.从Eclipse中运行项目
HelIqworlds
默认情况下,Eclipse将在目前正运行的模拟器上部署您的应用程序(图9)。
您的模拟器实例现在显示了一个白色的屏幕,其中显示了所有Java开发人员都
喜欢的问候语!
如果Eclipse因为某种原因在模拟器上运行应用程序时出现故
障,则需要返回到RunAs选项并选择RunConfigurations。
在Target选项卡中,重新选择Automaticallyselectcompatibledevice,并确保您的模拟
器也被选中。
图10.HelloWorld!
回页首
基本Android应用程序
您现在有了一个基本的HelloWorld应用程序,可以在任何与4.2兼容的Android设备上运行它。
最后,您可能希望定制这个应用程序,以便添加更多的
功能。
目前,我希望对Android应用程序进行分析。
Android的特制JVM
Android应用程序是使用Java代码进行编写的,但并没有在标准JVM上运行它们。
作为Android构建的一部分,我们会对Java字节代码进行转换,并针对移动设备的存和处理需求进行特殊处理。
请参阅参考资源,详细了解Android应用程序的架构和Dalvik虚拟机。
回到EclipseIDE。
在项目的src目录中,导航到项目的.java文件。
如果您保留了所有默认值,那么该文件的名称应为MainActivity。
Activity类是
Android移动应用程序的驱动引擎,类似于servlets对于Java服务器端应用程序的意义。
每个Activity都有一个生命周期,类似于Javaapplet的生命周期。
HelloWorld应用程序只包含基本的架构,因此其Activity非常简单。
首先,该类将从Android的Activity类扩展。
activity的入口点是onCreate方法,它在应用程序加载时由平台启动。
这个方法中的关键代码是setContentView调用。
清单3显示了默认的MainActivity类。
清单3.MainActivity
package.example.hello;
importandroid.os.Bundie;
importandroid.app.Activity;
importandroid.view.Menu;
publicclassMainActivityextendsActivity{
Override
protectedvoidonCreate(BundlesavedlnstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}_
Override
publicbooleanonCreateOptionsMenu(Menumenu){
getMenulnflater().inflate(R.menu.activity_main,menu);
returntrue;
}
}
在清单3中,setContentView加载了activity_main布局,它是您在第一次打开项目时在Eclipse中看到的视图的名称。
该名称与res/layout目录中的
activity_main.xml文件对应。
打开该文件,查看应用程序的图形化表示。
在视
图的左下方的选项卡中,有一个查看原始XML文件的选项,可以单击该选项来
查看原始文件,容类似于清单4。
清单4.原始布局的定义
vRelativeLayoutxmlns:
android="schemas.android./apk/res/android"
xmlns:
tools="schemas.android./tools"
android:
layout_width="match_parent"
android:
layout_height="match_parent"
tools:
context=".MainActivity">
vTextView
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_centerHorizontal="true"
android:
layout_centerVertical="true"
android:
text="string/hello_world"/>
Android视图是在XML文件中定义的。
每个视图都有一个布局,您可以向其中添加小部件,比如按钮或文本字段。
目前,样例应用程序有一个RelativeLayout和一个小部件:
TextView。
如果仔细观察这个小部件,您会发现一个文本字段,它被设置为一个引用:
string/hello_world。
该变量是指向实际字符串的指针,您可以在res/values/strings.xml文件中找
到它。
打开该文件。
要查看原始XML,请单击左下方区域的strings.xml选项卡。
清单5.strings.xml文件
xmlversion="1.0"encoding="utf-8"?
>
Hello4.2
Helloworld!
Settings
清单5中的第二个字符串定义将hello_world映射到HelloWorld!
。
Androidmanifest
您目前已经了解了Android应用程序的三个重要元素是如何联系起来的:
行为、
布局和资源文件。
在应用程序启动时,AndroidOS将调用MainActivity的
onCreate方法。
onCreate方法随后会加载布局,该布局从另一个XML资源文
件获取一些值。
在本例中,结果是一个显示了“HelloWorld!
”的简单的UI。
但是,设备如何知道应该调用哪个Activity?
现在是AndroidManifest.xml发挥作用的时候了。
在项目根目录中查看这个文件。
单击该文件,Eclipse会加载一个简洁的定制视图,视图左下角有一些选项卡。
单击标签为
AndroidManifest.xml的选项卡将会显示清单6所示的原始XML。
清单6.AndroidManifest.xml
xmlversion="1.0"encoding="utf-8"?
>
android="schemas.android./apk/res/android"package=".example.hello"android:
versionCode="1"android:
versionName="1.0">
minSdkVersion="8"android:
targetSdkVersion="17"/>
allowBackup="true"android:
icon="drawable/ic_launcher"android:
label="string/app_name"android:
theme="style/AppTheme">android:
name=".example.hello.MainActivity"android:
label="string/app_name">
name="android.intent.action.MAIN"/>
name="android.intent.category.LAUNCHER"/>
该文件的作用是向底层设备解释您的应用程序。
它包含一个名为application
的XML块,其中定义了activity。
您的MainActivity将被引用,action被定义并包含一个category。
action会告诉设备要启动哪一个Activity。
在本例中,action将您的Activity描述为MAIN。
AndroidManifest.xml文件中的其他重要声明包括uses-sdk部分,它表示min版本为8(即Android2.2.x),目标版本为17,即Android4.2。
我在后面的文章中将会介绍这些细节。
现在,只需明白Android平台提供了可以兼容早期版本的库就足够了
Android常用缩写
SDK:
softwaredevelopmentkit软件开发工具包
AWT:
abstractwindowtoolkit抽象窗口工具
DalvikVM:
(冰岛小镇的名称)经过优化后的JVM叫做dalvikvm
ADT:
androiddevelopmenttoolsAndroid开发工具
(AndroidSDK包含一个Eclipse插件名为ADT)
IDE:
integrateddevelopmentenvironment集成开发环境
Eclipse是一个集成开发环境。
它把开发需要的很多工具都集成到一起,方便开发人员进行开发。
QEMU:
处理器模拟器
Invoke调用——invokewebbrowser调用web浏览器。
Intent意图
Action功能
View看
Parse分析描述uri.parse(“.goole.”);
Uri:
web上可用的每种资源,如HTML文档,图像,视频,程序等,由一个通用资源标示符等进行定位。
URL是URI的一个子集。
即URI包含URL。
AVD:
AndroidvirtualdeviceAndroid运行的虚拟设备
Internalstorage:
存储器。
(定义Android手机类型)
Snapshot快照功能
UseHostGPU使用主机GPU
Allocate:
分配面向
Failedtoallocatememory面向存错误
SimpleOnGesture[?
d?
®?
?
]Listener:
简单的手势动作监听
Navigationtype:
导航类型
LinearRelative(亲属)Table3种布局类型
onFling/Fling:
扔,投掷
motioneven/motion:
动作
swipedetector:
重击探测器
基础知识
Android的开发使用的是Java语言,所以我们需要下载JVM(Java虚拟机)来解释运行Java字节码。
JVM通常会提供必需的优化使Java运行时能达到与C等其他编译语言相当的性能水平。
因为Android属于Java的分支,可以这么说Android是Java的简化。
所以我们可以想到Android不需要全部的Java容,他所使用的JVM也就当然是简化后的JVM,相比Java的JVM要简化很多,当然这也限制了手机的存,处理器速度和功能。
经过优化后的JVM叫做dalvikVM。
一个手持设备的总RAM可能只有64MB。
可供应用程序使用的空间可能只有20MB。
SD卡:
就我们说的手机的存储卡。
DalvikVM获取生成的Java类文件,将他们组合成一个或多个dalvik可执行文件,该可执行文件的后缀名为.dex。
它重用多个类文件的重复信息与未压缩的.jar文件相比,有效地将空间需求减少了一半。
例:
Android中WEB浏览器的.dex约200K,而对应的未压缩的.jar版本约500K。
DalvikVM使用了一个不同的汇编代码生成方法。
使用寄存器而不是栈作为主要的数据存储单元。
采用dalvikVM后,Android中最终的可执行程序代码不是基于Java字节码,而是基于.dex文件。
这意味着无法直接运行Java字节码,必须首先得到Java类文件及.class文件,然后将他们转换成.dex文件。
.Java->.class->.dex
minimumrequiredSDK又为miniSdk,是你程序最低支持的SDK版本,这个现在一般miniSDK设定一般为8或者10.
Word
PartofSpeech
ADefinitionthatisasentenceortwo.
NextwordTakequi2
Takequiz:
测试takeourquiztofindout。
来做做测试寻找答案吧。
被重新激活
被另外一个Activity覆盖,冲'可见
Actived
Kdled状态
Android基本组件
View:
构成用户界面的组件