|
|
|
|
移动端

2.2.2 Android 应用工程文件组成

《Android游戏开发从入门到精通》第2章Android 核心框架分析,本章将简要讲解Android 体系的具体组成,为读者进行本书后面知识的学习打下基础。本节为大家介绍Android 应用工程文件组成。

作者:王玉芹来源:机械工业出版社|2017-11-14 10:09

有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研


2.2.2 Android 应用工程文件组成

讲解完Android 的整体结构之后,接下来开始讲解Android 工程文件的组成。因为学习本书的目的就是开发Android 游戏项目,而每个Android 应用项目都是用Eclipse 创建的工程,所以很有必要了解一个Android 工程文件的结构。

在Eclipse 中,一个基本的Android 项目的目录结构如图2-9 所示。

1. src 目录

在里面保存了开发人员编写的程序文件。和一般的Java项目一样,“src”目录下保存的是项目的所有包及源文件(.java),“res”目录下包含了项目中的所有资源。例如,程序图标(drawable)、布局文件(layout)和常量(values)等。不同的是,在Java 项目中没有“gen”目录,也没有每个Android 项目都必须有的AndroidManifest.xml 文件。

“.java”格式文件是在建立项目时自动生成的,这个文件是只读模式,不能更改。R.java 文件是定义该项目所有资源的索引文件。例如下面是某项目中R.java 文件的代码。

  1. package com.yarin.Android.HelloAndroid;  
  2. public final class R {  
  3. public static final class attr {  
  4. }  
  5. public static final class drawable {  
  6. public static final int icon=0x7f020000;  
  7. }  
  8. public static final class layout {  
  9. public static final int main=0x7f030000;  
  10. }  
  11. public static final class string {  
  12. public static final int app_name=0x7f040001;  
  13. public static final int hello=0x7f040000;  
  14. }  

在上述代码中定义了很多常量,并且这些常量的名字都与res 文件夹中的文件名相同,这再次证明.java 文件中所存储的是该项目所有资源的索引。有了这个文件,在程序中使用资源将变得更加方便,可以很快地找到要使用的资源,由于这个文件不能被手动编辑,所以在项目中加入了新的资源时,只需要刷新一下该项目,.java 文件便自动生成了所有资源的索引。

2. 设置文件AndroidManifest.xml

文件AndroidManifest.xml 是一个控制文件,在里面包含了该项目中所使用的Activity、Service 和Receiver。例如下面是某项目中文件AndroidManifest.xml 的代码。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3. package="com.yarin.Android.HelloAndroid" 
  4. android:versionCode="1" 
  5. android:versionName="1.0"> 
  6. <application android:icon="@drawable/icon" 
  7. android:label="@string/app_name"> 
  8. <activity android:name=".HelloAndroid" 
  9. android:label="@string/app_name"> 
  10. <intent-filter> 
  11. <action android:name="android.intent.action.MAIN" /> 
  12. <category android:name="android.intent.category.LAUNCHER" /> 
  13. </intent-filter> 
  14. </activity> 
  15. </application> 
  16. <uses-sdk android:minSdkVersion="9" /> 
  17. </manifest> 

在上述代码中,intent-filters 描述了Activity 启动的位置和时间。每当一个Activity(或者操作系统)要执行一个操作时,它将创建出一个Intent 的对象,这个Intent 对象可以描述程序想做什么,想处理什么数据,数据的类型,以及一些其他信息。Android 会和每个Application所暴露的intent-filter 的数据进行比较,找到最合适的Activity 来处理调用者所指定的数据和操作。下面仔细分析AndroidManifest.xml 文件,如表2-1 所示。

表2-1 AndroidManifest.xml 分析

3. 常量定义文件

下面看看在资源文件中对常量的定义,例如文件String.xml 的如下代码。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3. <string name="hello">Hello World, HelloAndroid!</string> 
  4. <string name="app_name">HelloAndroid</string> 
  5. </resources> 

上述定义常量的代码非常简单,只定义了两个字符串资源,里面的字符直接显示在手机屏幕中,就像动态网站中的HTML 一样。

4. 布局文件

布局(layout)文件一般位于“res\layout\main.xml”目录中,通过其代码能够生成一个显示界面,例如下面的代码。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3. android:orientation="vertical" 
  4. android:layout_width="fill_parent" 
  5. android:layout_height="fill_parent" 
  6. > 
  7. <TextView 
  8. android:layout_width="fill_parent" 
  9. android:layout_height="wrap_content" 
  10. android:text="@string/hello" 
  11. /> 
  12. </LinearLayout> 

在上述代码中,有以下几个布局属性和参数。

<LinearLayout></LinearLayout>:在这个标签中,所有元件都是按由上到下的顺序排成的。

android:orientation:表示这个布局的版面配置方式是从上到下垂直地排列其内部的视图。

android:layout_width:定义当前视图在屏幕上所占的宽度,fill_parent 即填充整个屏幕。

android:layout_height:定义当前视图在屏幕上所占的高度,fill_parent 即填充整个屏幕。

wrap_content:随着文字栏位的不同而改变这个视图的宽度或高度。

在上述布局代码中,使用了一个TextView 来配置文本标签Widget(构件),其中设置的属性android:layout_width 为整个屏幕的宽度,android:layout_height 可以根据文字来改变高度,而android:text 则设置了这个TextView 要显示的文字内容,这里引用了@string 中的hello字符串,即String.xml 文件中的hello 所代表的字符串资源。hello 字符串的内容“Hello World,HelloAndroid!”这就是在HelloAndroid 项目运行时看到的字符串。

注意:上面介绍的文件是主要文件,在项目中需要自行编写。在项目中还有很多其他的文件,那些文件很少需要自行编写,所以在此就不进行讲解了。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网管员必读——网络组建(第2版)

《网管员必读——网络组建(第2版)》仍是以一个中等规模的模拟局域网组建为思路,较全面地介绍了与局域网组建相关的各方面知识和组建、配...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊