|
|
|
|

ArcGIS API for Android 案例教程 4

图 9 “Hello World”的工程目录结构 从Eclipse中展开“AgsSampleHelloWorld”工程,我们就可以看到图 9这样的目录结构。在这个目录结构中,最扎眼的就是“src”目录和其中的“HelloWorld.java”,这让我们马上意识到这是一个Java程序。没错,Android系...

作者:牛魔王的作坊来源:http://blog.csdn.net/warrenwyf/|2011年03月11日

clip_image004

9 “Hello World”的工程目录结构

从Eclipse中展开“AgsSampleHelloWorld”工程,我们就可以看到图 9这样的目录结构。在这个目录结构中,最扎眼的就是“src”目录和其中的“HelloWorld.java”,这让我们马上意识到这是一个Java程序。没错,Android系统虽然是基于Linux内核的,但是在Android开发应用程序却是使用Java语言,Java代码编译出来的字节码将运行在Linux系统中的一个虚拟机中,这个虚拟机名为Dalvik[1]

在工程的根目录下有两个配置文件,“default.properties”和“AndroidManifest.xml”。这两个配置文件在这么“根”的位置,当然是对整个工程有提纲挈领的作用,先看这个“default.properties”,打开只有一行实际内容(和很多行注释):

target=android-8

从这个文件的注释中知道,你既无需修改这个文件,也从中得不到很多信息,这个文件只是告诉了Android的编译系统,这个工程的目标平台是“android-8”,也就是Android 2.2。

clip_image006

图 10 Android平台版本和API版本的关系

但是,“AndroidManifest.xml”就不一样了,从名字就可以知道,这是Android工程的清单文件,直接用文本编辑器打开它可能是如下的内容:

"1.0" encoding="utf-8"?>

"http://schemas.android.com/apk/res/android"

package="com.esri.ARCGIS.android.samples"

android:versionCode="1"

android:versionName="1.0">

"@drawable/icon" android:label="@string/app_name">

".HelloWorld"

android:label="@string/app_name">

"android.intent.action.MAIN" />

"android.intent.category.LAUNCHER" />

"android.permission.INTERNET">

android:name="android.permission.WRITE_EXTERNAL_STORAGE">

android:name="android.permission.ACCESS_FINE_LOCATION">

"7" />

在这个清单文件的下方,有一些元素,它包含了这个工程正常运行所需要的权限,比如“AgsSampleHelloWorld”运行时会显示一个在线的地图,那么显然,它运行时需要一个Internet连接,所以,这里需要配置“android.permission.INTERNET”这个用户权限。这样,在这个应用程序被安装的时候,Android就会询问用户:“你是不是允许这个程序访问Internet?”,如果用户允许了,你的应用程序才能正常地获取地图。当然,不要担心编写配置文件是一件很麻烦的事情,Android开发工具提供了“Android Manifest Editor”帮助你可以比较方便地编辑清单文件,比如用户权限就可以如图 11这样地修改。

clip_image008

11 使用Android开发插件配置工程权限

再往上看,清单文件中的元素中包含的是对应用程序包含组件的描述。首先,让我们把元素本身的属性值挑出来看看:

"@drawable/icon" android:label="@string/app_name">

“@drawable/icon”显然是这个程序的图标,但是具体对应到哪个图片呢?这还得继续看当前工程的目录结构,在工程目录下有个“res”文件夹,其中主要存放应用程序的各种资源,而以“drawable-”打头的几个目录就是存放图片的目录,不同目录后面会跟着“hdpi”[2]、“mdpi”[3]、“ldpi”[4]之类不同的内容,这些目录下对应的是不同尺寸屏幕下的不同图片,因为小屏幕可能只需要小图片,大屏幕可能就需要更大更精细的图片。

clip_image010

图 12 res目录下的资源

“@string/app_name”则对应了一段字符串,这个字符串是在“res/values”目录下的“strings.xml”文件中定义的,打开这个文件是如下的内容:

"1.0" encoding="utf-8"?>

"hello">Hello World, HelloWorld!

"app_name">HelloWorld Sample

想必,等会应用程序运行起来后,它的标题栏上应该会显示“HelloWorld Sample”这一行内容,对吧。

为什么我们在一些目录和XML文件中配置一些内容,Android程序就能知道从哪里去获取真实的资源呢?因为Android开发工具会帮助我们生成一个“R.java”源文件,这个源文件定义了一个名为“R”的类,这个类中不同的静态变量指示了各种资源的不同位置,在后面你可以看到,在程序的Java代码中,我们可以直接通过R.xxx.xxx指代一个资源。

clip_image012

图 13 自动生成的R.java

清单文件的元素内还有元素,这对应了Android程序中的Activity。由于本次广告插播时间过长,这些内容留待后续再说,不过,现在起码你对一个Android工程中大概包含的内容应该有所了解了吧?


[1] http://zh.wikipedia.org/zh-cn/Dalvik虚拟机

[2] 高分辨率图片,如WVGA(480x800)、FWVGA(480x854)

[3] 中等分辨率图片,如HVGA(320x480)

[4] 低分辨率图片,如QVGA(240x320)

上一篇:ArcGIS API for Android 案例教程 3

下一篇:ArcGIS API for Android 案例教程 5