在创建一个Android程序时,ADT会自动创建一些目录和文件。这些目录和文件有固定的作用。我们的项目一般是在这些文件中进行修改和添加。因此,了解这些文件和目录,对Android开发有着非常重要的作用。
这些目录和文件有其固定的作用,有的允许修改,有的不能修改。
5个较为重要的文件夹src、gen、assets、bin和res。
- src目录是源代码目录,所有允许用户修改的java文件和添加的java文件都保存在这个目录中 。
在这里,HelloAndroid工程建立初期,ADT根据工程向导中的“Create Activity”选项,自动建立了一个MainActivity.java文件。
- gen目录用来保存ADT自动生成的java文件,用于记录资源索引,例如R.java或AIDL文件。这个目录中的文件不建议用户进行任何修改。(R.java可以理解为里面给资源进行了编号:当开发者在res/目录中任何一个子目录中添加相应类型的文件之后,ADT会在R.java文件中相应的内部类中自动生成一条静态int类型的常量,对添加的文件进行索引。如果在layout目录下再添加一个新的界面,那么在public static final class layout中也会添加相应的静态int常量。相反当我们在res目录下删除任何一个文件,其在R.java中对应的记录会被ADT自动删除,详情看这里)。这个文件夹下的文件基本无需改动。
- assets目录用来存放原始格式的文件
例如音频文件、视频文件等二进制格式文件。
此目录中的资源不能够被R.java文件索引,因此只能以字节流的形式进行读取。缺省为空目录。
通常,Android应用程序下的背景音乐等文件,将放置在该文件夹。 - bin目录保存了编译过程中的所产生的文件,以及最终生产的apk文件。
apk文件可直接在Android系统中安装。
- res目录是资源目录,Android程序所有的图像、颜色、风格、主题、界面布局和字符串等资源都保存在其下的几个子目录中。其中,drawable-hdpi、drawable-mdpi和drawable-ldpi目录用来保存同一个程序中针对不同屏幕尺寸需要显示的不同大小的图像文件。layout目录用来保存与用户界面相关的布局文件,ADT在layout目录生成了activity_main.xml文件。用于MainActivity的布局。values目录保存颜色、风格、主题和字符串等资源,ADT在values目录生成了strings.xml文件,用于保存应用程序使用的字符串。
本程序几个重要的文件:
1. AndroidManifest.xml文件
2. ItemDetailActivity.java ItemListActivity.java ItemDetailFragment.java ItemListFragment.java文件
3. activity_item_detail.xml activity_item_list.xml activity_item_twopane.xml fragment_item_detail.xml 文件
4. strings.xml文件
5. R.java文件
AndroidManifest.xml文件
该文件在项目的根目录下。此文件为Android项目的配置文件。Android项目中所使用的各种组件均需要在此文件中进行注册。本项目所需的各种权限需要在此文件中申明,并且指定了程序最低兼容版本和目标版本。
manifest元素包含一个application元素,application元素中能够声明Android程序中最重要的四种组件,包括Activity、Service、BroadcastReceiver和ContentProvider。
由图可见这个项目中有两个Activity,即ItemlistActivity和ItemDetailActivity,只有按照此方式注册的标签才能被Android项目使用。
Activity标签<intent-filter>用于指定该activity启动的方式。
1 <intent-filter> 2 <action android:name="android.intent.action.MAIN" /> 4 <category android:name="android.intent.category.LAUNCHER" /> 5 </intent-filter>
表明ItemListActivity是项目的主入口,项目启动时该Activity将被调用。
ItemDetailActivity.java ItemListActivity.java ItemDetailFragment.java ItemListFragment.java 文件
这些文件是本项目中所有的组件所对应的Java源代码。在src文件夹目录下。
以 ItemListActivity.java 为例,
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_item_list); }
表明onCreate()方法会在Activity首次启动时会被调用,调用父类的onCreate()函数,并将savedInstanceState传递给父类,savedInstanceState是Activity的状态信息;
setContentView 声明了需要显示的用户界面,此界面是用XML语言描述的界面布局,保存在scr/layout/activity_item_list.xml资源文件中。 activity_item_detail.xml activity_item_list.xml activity_item_twopane.xml fragment_item_detail.xml 文件在Android程序设计中,Activity的逻辑和视图是分离的。某个组件的java代码使用xml文件作为其布局文件,利用XML语言描述的用户界面。 strings.xml文件 res/values/strings.xml文件,Android应用中,界面显示的所有的字符串,应该都在该文件中定义。
<resources> <string name="app_name">KIWI</string> <string name="title_item_detail">Item Detail</string> </resources>
引用资源
资源引用有两种情况:一种是在代码中引用资源;另一种是在资源中引用资源。
代码中引用资源,需要使用资源的ID,可以通过[R.resource_type.resource_name]或[android.R.resource_type.resource_name]获取资源ID
resource_type代表资源类型,也就是R类中的内部类名称
resource_name代表资源名称,对应资源的文件名或在XML文件中定义的资源名称属性
资源中引用资源,引用格式:@ [package:]type:name
@表示对资源的引用
package是包名称,如果在相同的包,package则可以省略。
位于gen文件夹中。
ADT自动生成的文件
包含对drawable、layout和values目录内的资源的引用指针,Android程序能够直接通过R类引用目录中的资源。
因此,我们可以认为R.java为res中的资源进行了编号。
需要注意的是,R.java文件不要尝试手工修改,应有系统自动生成。否则有可能产生更新问题。