Android 应用开发笔记 - 应用程序设计基础

来源:互联网 发布:北森生涯怎么样知乎 编辑:程序博客网 时间:2024/04/30 03:48

 

3.1 Android程序架构

 

3.1.1 Android项目目录结构

与一般的Java项目一样,src文件夹是项目的所有包及源文件(.java),res文件夹中则包含了项目中的所有资源,比如程序图标(drawable)、布局文件(layout)、常量(values)等。

下面来介绍其他Java项目中没有的gen文件夹中R.java、BuildConfig.java文件和每个Android项目都必须有的AndroidManfest.xml文件。

gen文件夹中所有文件都是自动生成的,而且是只读的不能更改。

²       R.java文件是定义该项目所有资源的索引文件。

 

代码清单:R.java

/* AUTO-GENERATED FILE.  DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found.  It * should not be modified by hand. */package com.example.prjandroid;public final class R {    public static final class attr {    }    public static final class drawable {        public static final int ic_action_search=0x7f020000;        public static final int ic_launcher=0x7f020001;    }    public static final class id {        public static final int menu_settings=0x7f070000;    }    public static final class layout {        public static final int activity_main=0x7f030000;    }    public static final class menu {        public static final int activity_main=0x7f060000;    }    public static final class string {        public static final int MIC01=0x7f040004;        public static final int MIC02=0x7f040005;        public static final int app_name=0x7f040000;        public static final int hello_world=0x7f040001;        public static final int menu_settings=0x7f040002;        public static final int title_activity_main=0x7f040003;    }    public static final class style {        public static final int AppTheme=0x7f050000;    }}

 

²       BuildConfig.java文件是你的项目调试(Debug)开关。

 

代码清单:BuildConfig.java

/** Automatically generated file. DO NOT MODIFY */package com.example.prjandroid;public final class BuildConfig {    public final static boolean DEBUG = true;}

   

²       AndroidManfest.xml文件则包含了该项目中所有使用的Activity、Service、Receiver

 

代码清单:AndroidManfest.xml

                                                                                    

 

说明

mainfest

根节点,描述了package中所有的内容

xmlns

包含命名空间的声明。

xmlns:android=http://schemas.android.com/apk/res/android,使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。

package

声明应用程序包

uses-sdk

该程序使用的Android SDK版本

android:icon

应用程序图标

android:label

应用程序名字

android:theme

程序外观

activity

用来与用户交互的主要工具。

Activity是用户打开一个应用程序的初始页面,大部分被使用到的其他页面也由不同的Activity所实现,并声明在另外的Activity标记中。

注意,每一个Activity必须有一个<activity>标记对应,无论它给外部使用或是只用于自己的package中。

如果一个Activity没有对应得标记,你将不能运行它。另外,为了支持运行时查找Activity,可包含一个或多个<intent-filter>元素来描述Activity所支持的操作

android:name

应用程序默认启动的Activity

intent-filter

声明了指定的一组组件支持的Intent值,从而形成了IntentFilter。除了能在此元素下指定不同类型的值,属性也能放在这里来描述一个操作所需的唯一的标签、icon和其他信息。

action

组件支持的Intent action

category

组件支持的Intent Category。这里指定了应用程序默认启动的Activity

 

下面我们看看资源文件中一些常量的定义,如strings.xml

 

代码清单:string.xml

    prjAndroid    Hello world!    Settings    MainActivity    Made In China    Made In China

 

我们定义的Made InChina就在此文件。

当我们使用它们时,把变量名的赋予一个常量即可。在R.java中有如下代码:

 public static final class string {        public static final int MIC01=0x7f040004;        public static final int MIC02=0x7f040005;        public static final int app_name=0x7f040000;        public static final int hello_world=0x7f040001;        public static final int menu_settings=0x7f040002;        public static final int title_activity_main=0x7f040003;    }

 

    那么如何在程序中使用我们所定义的这些资源呢?首先,通过Content的getResources实例化一个Resources对象,然后通过Resources的getString方法取得指定索引的字符串,代码如下:

 

        Resources res = this.getResources();        String app = (String) res.getString(R.string.app_name);        Log.i(TAG, app);

 

现在来分析Made In China项目的布局文件(layout),首先打开res->layout->activity_main.xml文件,如代码清单如下:

 

    

 

代码清单中,有以下几个布局和参数。

²       RelativeLayout 相对布局。

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

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

²       android:layout_centerHorizontal:水平对齐,居中

²       android:layout_centerVertical:垂直对齐,其中

 

我们在其后的章节,要详细讲解它们。

 

 

 

 

 

 

 

3.1.2 Android应用解析

Android应用程序由4个模块构造而成:Activity, Intent, Content Provider, Service。

 

当然,也不是每个Android应用程序都必须由这4部分组成;但是,任何一个应用程序都必须在AndroidManfest.xml文件中声明使用到的这些模块。

1. Activity

Activity是最基本的模块。就像Delphi程序中的Form一样。

他继承自Activity类。

2. Intent

Intent实现Activity与Activity之间的切换。相当于Delphi中的“program”

3. Content Provider

当想将应用数据与其他的应用共享时,Content Provider就可以发挥作用了。

在Android中,Content Provider是一个特殊的存储数据的类型,它提供了一套标准的接口用来获取和操作数据。并且,Android自身也提供了现成的Content Provider:Contacts、Browser、CallLog、Settings、MediaStore。应用可以通过唯一的ContentResolver界面来使用具体的某个Content Provider,然后就可以用ContentResolver提供的方法来使用你需要的Content Provider了。其中,ContentResolver提供的方法包括query()、insert()、update()等。

4. Service

等同Windows中的Service。

 

 

 

 

 

3.2 Android的生命周期