Android 学习笔记 4 安卓程序结构及重要的程序文件

在创建一个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文件不要尝试手工修改,应有系统自动生成。否则有可能产生更新问题。

 

时间: 2024-10-12 22:20:46

Android 学习笔记 4 安卓程序结构及重要的程序文件的相关文章

Android学习笔记之使用意图打开内置应用程序组件

(1)布局文件如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" androi

Android学习笔记(十七)——使用意图调用内置应用程序

使用意图调用内置应用程序 1.创建一个新的Android项目并命名为Intents,在main.xml文件中添加两个Button: <Button android:id="@+id/btn_webbrowser" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="onClickWebBrowser&quo

Android学习笔记(二):搭建安卓开发环境

① 下载 JDK 5 or JDK 6 (JRE alone is not sufficient) ->安装->设置环境变量JAVA_HOME CLASSPATH path 下载地址:Download JDK ② 下载 Eclipse 3.3 (Europa), 3.4 (Ganymede) IDE for JAVA-> 解压 下载地址:Eclipse for JAVA developer ③ 下载 Android SDK 解压-> path 里加入 SDK 包中的 tools 目

Android学习笔记(十九):建立自己的ListView

在之前的例子中,我们通过设置adapter的getView()来编写我们所希望的UI,然而在面向对编程中,我们希望能够创建自己的ListView,例如类的名字为com.wei.android.learning.RatingView,只要在XML中用我们自己的RatingView对ListView来替代,就可以实现我们的风格,并前在源代码中向使用ListView一样简单调用就可以了. 实现的目标 在Android XML文件中,可以如下调用我们的RatingView: <com.wei.andro

Android学习笔记(1)——电话拨号器

搬运自本人博客:Android学习笔记(1)--电话拨号器 程序的实现过程非常简单,大体分为以下几步: 确定程序的功能,大致确定好UI界面. 通过调整xml文件参数让界面更加美观. 在Activity文件编写代码,完成对应的事件等. 对于电话拨号器,我们最后的界面大致如下: 对应的布局文件如下,采用的是相对布局. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <Relative

【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只含有一个ListView的Activity,并通过setListAdapter()方法来管理adapter.我们可以通过扩展ListActivity来实现. 我们要在整个屏幕上显示ListView,我们直接继承使用ListActivity,不需要在定义自己的layout XML文件,我们在上一学习中

Android学习笔记(一):基本概念

本文内容引用于<Android开发教程&笔记> Android的概念: Android是一个专门针对移动设备的软件及,它包括一个操作系统,中间件和一些重要的应用程序.Beta版的Android SDK提供了在Android平台上使用Java语言进行Android应用开发必须的工具和API接口. 特性 • 应用程序框架 支持组件的重用与替换• Dalvik 虚拟机 专为移动设备优化• 集成的浏览器 基于开源的 WebKit 引擎• 优化的图形库 包括定制的2D 图形库,3D 图形库基于

Android学习笔记——关于onConfigurationChanged

从事Android开发,免不了会在应用里嵌入一些广告SDK,在嵌入了众多SDK后,发现几乎每个要求在AndroidManifest.xml申明Activity的广告SDK都会要求加上注明这么一句属性: android:configChanges="orientation|keyboard|keyboardHidden" 通过查阅Android API可以得知android:onConfigurationChanged实际对应的是Activity里的onConfigurationChan

Android学习笔记(二二): 多页显示-Tag的使用

在手机屏幕中,Tab也是比较常用的,通常和List结合,例如我们手机的通信录.下面是Tag的结构. TabHost是整个Tab的容器,包括两部分,TabWidget和FrameLayout.TabWidget就是每个tab的标签,FrameLayout则是tab内容. 如果我们使用extends TabAcitivty,如同ListActivity,TabHost必须设置为@android:id/tabhost TabWidget必须设置android:id为@android:id/tabs F