您的位置:首页 > 移动开发 > Android开发

Android应用程序及其主要结构

2016-02-21 13:07 435 查看
在建立应用程序的过程中,ADT会自动建立一些目录和文件,这些目录和文件有其固定的作用,有的(例如配置文件AndroidManifest.xml )允许修改,有的(如R.java )不能修改。

1,Activity:每个Activity须继承自Activity并实现其自身的OnCreate()方法,一般在这里要添加widget组件,实现应用界面和用户交互。

2,Intent:Android使用Intent用来从一个画面跳另一个画面,Intent是用来描述一个程序想要做些什么事情。在Intent的数据结构中有两个很重要的部分:动作(action)及对数据产生反应(data to act upon)。

3,Service:如果Android应用程序并不需要显示Activity画面但却需要长时间运行(如播放背景音乐等),就要具备Service功能。

4,Content Provider:Content Provider(使用Provider名称)所进行的动作是让使用者可以存储信息或文件,使用Content Provider的函数就可以让其他的程序获得、保存、检索信息。

5,源码文件夹src和gen\R.java:工程中的src文件夹存放诸如Activity等java源码,其内部结构根据用户所声明的包(即在新建工程时指定的“Package Name”)自动组织。

6,gen目录:用来保存ADT自动生成的java文件,例如R.java

7,R.java:包含对drawable、layout和values目录内的资源的引用指针。Android程序能够直接通过R类引用目录中的资源,R.java文件不能手工修改,如果向资源目录中增加或删除了资源文件,则需要在工程名称上右击,选择Refresh来更新R.java文件中的代码R类包含的几个内部类,分别与资源类型相对应,资源ID便保存在这些内部类中,例如子类drawable表示图像资源,内部的静态变量icon表示资源名称。一般情况下,资源名称与资源文件名相同。

8,引用资源有两种情况:一种是在代码中引用资源;另一种是在资源中引用资源

代码中引用资源需要使用资源的ID,可以通过[R.resource_type.resource_name]或[android.R.resource_type.resource_name]获取资源ID,其中的resource_type代表资源类型,也就是R类中的内部类名称;resource_name代表资源名称,对应资源的文件名或在XML文件中定义的资源名称属性

资源中引用资源的引用格式:@ [package:]type:name

@表示对资源的引用,package是包名称,如果在相同的包,package则可以省略

9,Android.jar文件是支持该应用程序运行的JAR包,同时它也是Android SDK架构中的“Android RunTime”层中与Dalvik虚拟机同处一层的Android Core Library

10,Android.jar与asserts:asserts存放项目相关的资源文件,例如文本文件、媒体文件等。

11,资源目录res:res目录下存放资源文件,常见的资源有图片、声音、动画、布局文件等。string.xml一般位于工程res文件夹下的values子文件夹下。如果需要在Activity中显示相应的字符串变量,可以在strings.xml文件中添加相应的resources,并在其中添string和/string部分。main.xml是对Activity中组件进行布局的系统默认生成的文件。注意:XML布局和资源文件并不包含在Activity的Java源码中,各种资源文件由系统自动生成的R.java文件来管理。如果需要引用相应的布局,可在Java源码中通过setViewContent(XML布局文件名称)将其引用。在一个工程中,可以为不同的Activity指定不同的XML布局文件 。其子目录drawable目录用来保存图像文件。layout目录用来保存与用户界面相关的布局文件。在layout目录生成了mail.xml文件,用于描述用户界面。valuse目录保存文件颜色、风格、主题和字符串等。

12,main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>


第7行的代码说明在界面中使用TextView控件,TextView控件主要用来显示字符串文本第10行代码说明TextView控件需要显示的字符串,非常明显,@string/hello是对资源的引用。

Strings.xml文件的代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, HelloAndroid!</string>
<string name="app_name">HelloAndroid</string>
</resources>


第3行代码,是在TextView控件中显示的字符串,应是“Hello World, HelloAndroid!”如果修改strings.xml文件的第3行代码的内容,重新编译、运行后,模拟器中显示的结果也应该随之更改。

13,应用程序整体布局文件AndroidManifest.xml:

它声明了应用程序的构成

程序包的全局变量

活动(Activities)

内容管理器(Content Providers)

广播接收器(Broadcast Receivers)

请求安全授权(users-permission)

声明安全授权(permission)

它包含了Android系统运行Android程序前所必须掌握的重要信息,包含应用程序名称、图标、包名称、模块组成、授权和SDK最低版本等

Android程序必须在根目录下包含AndroidManifest.xml文件

AndroidManifest.xml文件的示例代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.hrbeu.HelloAndroid"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".HelloAndroid"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>


AndroidManifest.xml文件的根元素是manifest,包含了xmlns:android、package、android:versionCode和android:versionName共4个属性

xmlns:android定义了Android的命名空间,值为http://schemas.android.com/apk/res/android

package定义了应用程序的包名称

android:versionCode定义了应用程序的版本号,是一个整数值,数值越大说明版本越新,但仅在程序内部使用,并不提供给应用程序的使用者

android:versionName定义了应用程序的版本名称,是一个字符串,仅限于为用户提供一个版本标识

manifest元素仅能包含一个application元素,application元素中能够声明Android程序中最重要的四个组成部分,包括Activity、Service、Broadcast Receiver和Content Provider,所定义的属性将影响所有组成部分

属性android:icon定义了Android应用程序的图标,其中@drawable/icon是一种资源引用方式,表示资源类型是图像,资源名称为icon,对应的资源文件为res/drawable目录下的icon.png

属性android:label则定义了Android应用程序的标签名称

default.properties文件:

仅用来定义程序所使用的Android SDK版本,也就是目标平台或Google APIs是什么。

default.properties文件记录Android工程的相关设置,该文件不能手动修改,需右键单击工程名称,选择“Properties”进行修改

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: