Android目录结构(详解)

Android目录结构(详解)

下面是HelloAndroid项目在eclipse中的目录层次结构:

由上图可以看出项目的根目录下共有九个文件(夹),下面就这九个文件(夹)进行详解:

1.1src文件夹和assets文件夹:

每个Android程序都包含资源目录(src)和资产目录(assets),资源和资产听起来感觉没有多大差别,但在存储外部内容时用资源(src)比较多,其中它们的区别在于存放在资源(src)下的内容可以通过应用程序的R类进行访问,而存放在资产(assets)下的内容会保持原始文件的格式,如果需要访问,则必须使用AssetManager以字节流的方式来读取,用起来非常的不方便。为了方便使用,通常文件和数据都会保存在资源(src)目录下

1.2res(Resource)目录:资源目录

可以存放一些图标,界面文件和应用中用到的文字信息,下图为res目录截图:

1.2.1
drawable-*dpi文件夹:将图标按分辨率的高低放入不同的目录,其中draeable-hdpi用来存放高分辨率的图标,drawable-mdpi用来存放中等分辨率的图标,drawable-ldpi用来存放低分辨率的图标

1.2.2 values文件夹:用来存放文字的信息

(1)strings.xml:用来定义字符串和数值

<?xml
version="1.0"encoding="utf-8"?>

<resources>

<string name="hello">Hello
World, Hello 3G</string>

<string
name="app_name">Android1.1</string>

<string
name="test">哥想你了</string>

<string
name="startButton">按钮1</string>

<string
name="start">按钮1</string>

</resources>

每个string标签生命了一个字符串,name属性指定它的引用值

(2)为什么要把这些出现的文字单独放在strings.xml文件中?

答案:一是为了国际化,如果需要将文件中的文字换成别的国家的语言,就可以只需要替换掉一个strings.xml文件就可以了

二是为了减少应用的体积,例如,我们要在应用中使用“哥想你了”这句话1000次,如果我们没有将“哥想你了”定义在strings.xml文件中,而是直接在应用中使用时写上这几个字,那么我们就会在应用中写4000个字。4000个字和4个字占用的内存可是有很大差距的啊,况且手机的内存本来就小,所以应该是能省就省

(3)另外还有arrays.xml,color.xml等定义数组,颜色的,都最好用单独的一个xml文档

1.2.3 layout文件:用来存放界面信息

本例中的布局文件是自动生成的“main.xml”

<?xml
version="1.0"encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/test"/>

</LinearLayout>

<LinearLayout>元素:线性布局的意思,在该元素下的所有子元素都会根据他的”orientation”属性来决定是按行还是按列或者按逐个显示进行布局的

<TextView>元素:是一种显示控件,他的”text”属性指定了在这个元素上显示的内容

1.3 gen目录:gen目录下只有一个自动生成的“R.java”文件

/*AUTO-GENERATED FILE.  DO NOT MODIFY.

*

* This class was automatically generated bythe

* aapt tool from the resource data
itfound.  It

* should not be modified by hand.

*/

packagecn.csdn.android.demo;

public final class R {

public static final
class
 attr {

}

public static final
class
 drawable {

public
static final int
 ic_launcher=0x7f020000;

}

public static final
class
 id {

public
static final int
 button1=0x7f050000;

public
static final int
 radioButton1=0x7f050001;

public
static final int
 toggleButton1=0x7f050002;

}

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;

public
static final int
 start=0x7f040004;

public
static final int
 startButton=0x7f040003;

public
static final int
 test=0x7f040002;

}

}

R.java文件:默认有attr,drawable,layout,string这四个静态内部类,每个静态内部类对应一中资源,如layout静态内部类对应layout中的界面文件,string静态内部类对应string内部的string标签。如果在layout中在增加一个界面文件或者在string内增加一个string标签,R.java会自动在其对应的内部类增加所增加的内容。

R.java除了自动标识资源的索引功能外,还有另一个功能,就是当res文件中的某个资源在应用中没有被用到,在这个应用被编译时,系统不会把对应的资源编译到应用中的APR包中。

1.4 AndroidManifest.xml 功能清单文件

每个应用程序都会有一个AndroidManifest在它的根目录里面。这个清单为Android系统提供了这个应用的基本信息,系统在运行之前必须知道这些信息,另外,如果我们使用系统自带的服务,如拨号服务,应用安装服务等,都必须在AndroidManifest.xml文件中声明权限

AndroidManifest.xml的功能:

命名应用程序的Java应用包,这个包名用来唯一标识应用程序;

描述应用程序的组件,对实现每个组件和公布其功能的类进行命名,这些声明使得Android系统了解这些组件以及它们在什么条件下可以被启动

决定哪个组件运行在哪个进程里面

声明应用程序必须具备的权限,用以访问受保护的API,以及和其他进程的交互

声明应用程序其他的必备权限,用以组件之间的交互

列举application所需要链接的库

以HelloAndroid项目的功能清单为例子进行讲解:

<?xml
version="1.0"encoding="utf-8"?>

<manifest
xmlns:android="http://schemas.android.com/apk/res/android"

package="cn.csdn.android.demo"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk
android:minSdkVersion="8"/>

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name">

<activity

android:label="@string/app_name"

android:name=".HelloActivity">

<intent-filter >

<action android:name="android.intent.action.MAIN" />

<category
android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

1.4.1 <manifest>元素

<manifest
xmlns:android="http://schemas.android.com/apk/res/android"

package="cn.csdn.android.demo"

android:versionCode="1"

android:versionName="1.0">

<manifest>元素是AndroidManifest.xml的根元素,”xmlns:android”是指该文件的命名空间,“package”属性是Android应用所在的包,“android:versionCode”指定应用的版本号,如果应用不断升级,则需要修改这个值,”android:versionName”是版本的名称,这个可以根据自己的喜爱改变

1.4.2 <application> 元素

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name">

<activity

android:label="@string/app_name"

android:name=".HelloActivity">

<intent-filter >

<action
android:name="android.intent.action.MAIN"/>

<category
android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

<application>元素是一个很重要的元素,开发组件都会在此下定义

<application>元素的”icon”属性是用来设定应用的图标,其中“@drawable/ic_launcher”的意思是:在R.java文件中的drawable静态内部类下的icon,如下图所示

<application>元素的“label”属性用来设定应用的名称,其中“@string/app_name”和上述的一样,也是R.java文件中的string静态内部类下的app_name

1.4.3 <activity>元素

<activity

android:label="@string/app_name"

android:name=".HelloActivity" >

<intent-filter >

<action android:name="android.intent.action.MAIN" />

<category
android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity>元素的作用是注册一个activity信息,当我们在创建“HelloAndroid”这个项目时,指定了“Created
Activity”属性为“HelloActivity”,然后ADT在生成项目时帮我们自动创建了一个Activity,就是“HelloActivity.java”;

<activity>元素的“name“属性指定的是Activity的类名,其中“.HelloActivity”中的“.”指的是<manifest>元素中的“package”属性中指定的当前包,所以“.HelloActivity”就相当于“cn.csdn.android.demo.HelloActivity.java”,如果Activity在应用的包中可以不写“.”,但是为了避免出错,还是写上这个点把

1.4.4<intent-filter>元素

<intent-filter >

<action android:name="android.intent.action.MAIN" />

<category
android:name="android.intent.category.LAUNCHER" />

</intent-filter>

<intent-filter>如果直接翻译的话是“意图过滤器”,组件通过<intent-filter>告诉它们所具备的功能,就是能响应意图类型,在intent中设置action,
data, categroy之后在对应的intentfilter中设置相同的属性即可通过过滤被activity调用

1.5<project.properties>应用要求运行的最低Android版本

1.6<android 2.2>  存放Android自身的jar包

【引用】http://www.oschina.net/question/234345_53839

Android目录结构(详解),布布扣,bubuko.com

时间: 2024-10-20 21:22:53

Android目录结构(详解)的相关文章

Nuxt.js学习(二) --- Nuxt目录结构详解、Nuxt常用配置项、Nuxt路由配置和参数传递

[TOC] 1.Nuxt目录结构详解 Nuxt项目文件目录结构 |-- .nuxt // Nuxt自动生成,临时的用于编辑的文件,build |-- assets // 用于组织未编译的静态资源入LESS.SASS 或 JavaScript |-- components // 用于自己编写的Vue组件,比如滚动组件,日历组件,分页组件 |-- layouts // 布局目录,用于组织应用的布局组件,不可更改. |-- middleware // 用于存放中间件 |-- pages // 用于存放

Android工程目录结构详解

工程目录结构: src: 存放java源代码的目录 gen: 存放自动生成文件的目录:R.java文件:存放res目录下对应资源的id 1,目录中存放所有由Android开发工具自动生成的文件. 2,目录中最重要的就是R.java文件.这个文件由Android开发工具自动产生的.Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件. 3,正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java文件. 4,R.java文件在应用中起到了字典的

Android开发:程序目录结构详解

HelloWorld程序的目录结构概述 我们可以在文件夹中看到,HelloWorld程序的目录主要包括:src文件夹.gen文件夹.Android文件夹.assets.res文件夹. AndroidManifest.xml.default.properties.在Eclipse的左侧展开HelloWorld项目,可以看到如下图的目录结构: 下面将分节介绍上面的各级目录结构. 1.src文件夹 顾名思义(src, source code)该文件夹是放项目的源代码的.打开HelloWorld.jav

Android工程的目录结构详解

在搭建Android开发环境及简单地建立一个HelloWorld项目后,本篇将通过HelloWorld项目来介绍Android项目的目录结构.本文的主要主题如下: 1.HelloWorld项目的目录结构 · 1.1.src文件夹 · 1.2.gen文件夹 · 1.3.Android 2.1文件夹 · 1.4.assets · 1.5.res文件夹 · 1.6.AndroidManifest.xml · 1.7.default.properties 下面将分节介绍上面的各级目录结构. 1.1.sr

Tomcat目录结构详解(非常详细)

Tomcat7 的目录结构如图: · 1.bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe.tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动Tomcat:如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat: 2.conf:这是一个非常非常

Angular新建项目目录结构详解

在上一篇博客中我们已经通过Angular CLI命令行工具创建出来一个全新的Angular项目,要想写项目,首先我们要先搞清楚项目的目录结构是怎样的,每个文件又有什么意义,文件中的代码又起到什么作用. 首先看一下整体的目录结构: 可以看到,命令行工具自动生成了很多文件和目录,我们来说说这些目录是干什么的 首层目录: node_modules 第三方依赖包存放目录 e2e 端到端的测试目录 用来做自动测试的 src 应用源代码目录 .angular-cli.json Angular命令行工具的配置

重要目录结构详解

ls -d 只显示目录 ls -ld /* 显示根下所有的目录 网卡文件:/etc/sysconfig/network-scripts/ifcfg-eth0 /etc/init.d/network restart   确保ONBOOT=yes Ifdown eth0 && idup eth0 查看:ifconfig blkid 看设备的UUID DNS客户端配置文件:/etc/resolv.conf 网卡文件 优先于 /etc/resolv.conf Setup里面也可配置DNS 主机名解

Tomcat的目录结构详解

Tomcat目录结构: 首先我们看看tomcat的目录下面都有什么文件 bin: 可以通过文件看出来这是一些关于tomcat的可执行的相关文件,比如启动和关闭 conf: 这个目录下存放的是tomcat相关的配置文件,常用的配置文件就是web.xml,server.xml这个配置文件是存放管理网站用户的信息 lib: 打开这个文件夹一看.全部都是jar文件,接触过java的朋友应该一目了然,这很明显就是java的jar包,这里存放的是网站后台调用的jar包 logs: 这个文件夹里面全部都是日志

Linux文件系统的目录结构详解

一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件系统的类型 3.目录结构的详细解读 4.一些重要子目录的解读 5.附录:目录结构的简明查阅手册 三.正 文 我想,不光是我,对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.下面大家跟飘扬一起来学习吧…………. 1.什么是文件系统 当您使用Linux的时候,如果您通过ls –l / 就会

Linux目录结构详解

由于利用Linux来开发产品的团队和个人实在太多了,想象一下,如果每个人都以自己的想法来配置文件放置的目录,那么管理上将会非常的困扰.为控制解决Linux文件目录配置极其混乱的局面,Linux目录配置标准FHS(Filesystem Hierarchy Standard)就这样出炉了,FHS的重点就在于规范每个特定的目录下应该放什么样的数据.这样就大大方便了独立的软件开发商.操作系统制作者及系统维护人员. FHS针对目录树架构定义出三层目录下应该放置什么样的数据,三层目录分别是: 1./(roo