zoukankan      html  css  js  c++  java
  • Android项目的目录结构(转)

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

    图2-20  Android应用工程文件的组成 1. src目录——程序文件 在里面保存了程序员辛辛苦苦直接编写的程序文件。和一般的Java项目一样,src目录下保存的是项目的所有包及源文件(.java),res目录下包含了项目中的所有资源。例如,程序图标(drawable)、布局文件(layout)和常量(values)等。不同的是,在Java项目中没有gen目录,也没有每个Android项目都必须有的AndroidManifest.xml文件。 .java格式的文件是在建立项目时自动生成的,这个文件是只读模式,不能更改。R.java文件是定义该项目所有资源的索引文件。先来看看HelloAndroid项目的R.java文件,代码如下所示。 package com.yarin.Android.HelloAndroid; public final class R {     public static final class attr {     }     public static final class drawable {         public static final int icon=0x7f020000;     }     public static final class layout {         public static final int main=0x7f030000;     }     public static final class string {         public static final int app_name=0x7f040001;         public static final int hello=0x7f040000;     } } 在上述代码中定义了很多常量,并且会发现这些常量的名字都与res文件夹中的文件名相同,这再次证明.java文件中所存储的是该项目所有资源的索引。有了这个文件,在程序中使用资源将变得更加方便,可以很快地找到要使用的资源。由于这个文件不能被手动编辑,所以当在项目中加入新的资源时,只需刷新一下该项目,.java文件便自动生成了所有资源的索引。 2. AndroidManifest.xml文件——设置文件 AndroidManifest.xml是一个控制文件,在里面包含了该项目中所使用的Activity、Service、Receiver,看下面“HelloAndroid”项目中的AndroidManifest.xml文件。 < ?xml version="1.0" encoding="utf-8"?> < manifest xmlns:android="http://schemas.android.com/apk/res/android"       package="com.yarin.Android.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="5" /> < /manifest> 在上述代码中,intent-filter描述了Activity启动的位置和时间。每当一个Activity(或者操作系统)要执行一个操作时,它将创建出一个Intent的对象,这个Intent对象能承载的信息可描述你想做什么、你想处理什么数据、数据的类型以及一些其他信息。而Android则会和每个Application所暴露的intent-filter的数据进行比较,找到最合适的Activity来处理调用者所指定的数据和操作。下面来仔细分析AndroidManifest.xml文件,如表2-1所示。 表2-1 AndroidManifest.xml分析

    参数 说明
    manifest 根节点,描述了package中所有的内容
    xmlns:android 包含命名空间的声明。xmlns:android=http://schemas.android.com/apk/res/android,使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据
     

    (续表)

    参数 说明
    package 声明应用程序包
    application 包含package中application级别组件声明的根节点。此元素也可包含application的一些全局和默认的属性,如标签、icon、主题、必要的权限,等等。一个manifest能包含零个或一个此元素(不能大于一个)
    android:icon 应用程序图标
    android:label 应用程序名字
    activity 用来与用户交互的主要工具。Activity是用户打开一个应用程序的初始页面,大部分被使用到的其他页面也由不同的<activity>所实现,并声明在另外的<activity>标记中。注意,每一个Activity必须有一个<activity>标记对应,无论它给外部使用或是只用于自己的package中。如果一个Activity没有对应的标记,你将不能运行它。另外,为了支持运行时查找Activity,可包含一个或多个<intent-filter>元素来描述Activity所支持的操作
    android:name 应用程序默认启动的Activity
    intent-filter 声明了指定的一组组件支持的Intent值,从而形成了Intent Filter。除了能在此元素下指定不同类型的值,属性也能放在这里来描述一个操作所需的唯一的标签、icon和其他信息
    action 组件支持的Intent action
    category 组件支持的Intent Category。这里指定了应用程序默认启动的Activity
    uses-sdk 该应用程序所使用的sdk相关版本
     

    3. 常量的定义文件——露脸的文件 下面看看资源文件中一些常量的定义,如String.xml,例如下面的代码。 < ?xml version="1.0" encoding="utf-8"?> < resources>   <string name="hello">Hello World, HelloAndroid!</string>   <string name="app_name">HelloAndroid</string> < /resources> 上述代码很简单,就定义了两个字符串资源,请不要小看上面的几行代码。它们的内容很“露脸”,里面的字符直接显示在手机屏幕中,就像动态网站中的HTML一样。 在Android中还有一个露脸的文件,那就是布局(layout)文件,这个文件一般为“res\layout\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> 在上述代码中,有以下几个布局和参数。 Ÿ      <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项目运行时看到的字符串。 注意:上面介绍的文件只是主要文件,在项目中需要自行编写。在项目中还有很多其他文件,那些文件很少需要编写,所以在此就不进行讲解了

  • 相关阅读:
    119. Pascal's Triangle II
    118. Pascal's Triangle
    112. Path Sum
    111. Minimum Depth of Binary Tree
    110. Balanced Binary Tree
    108. Convert Sorted Array to Binary Search Tree
    88. Merge Sorted Array
    83. Remove Duplicates from Sorted List
    70. Climbing Stairs
    陌陌面试经历
  • 原文地址:https://www.cnblogs.com/zhixing/p/2748852.html
Copyright © 2011-2022 走看看