原文:http://android.eoe.cn/topic/summary

Android开发之旅:组件生命周期吴秦 Android开发之旅:HelloWorld项目的目录结构

* HelloWorld项目的目录结构*

(这个HelloWorld项目是基于Android 2.1的)在Eclipse的左侧展开HelloWorld项目,可以看到如下图的目录结构:

Image:http://andriki.com/mediawiki/images/c/c8/Image_thumb_1.png

下面将分节介绍上面的各级目录结构。

* src文件夹*

顾名思义(src, source code)该文件夹是放项目的源代码的。打开HelloWorld.java文件会看到如下代码:
package helloworld.test;

import android.app.Activity;
import android.os.Bundle;

public class HelloWorld extends Activity {
/* * Called when the activity is first created. * /
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

可以知道:我们新建一个简单的HelloWorld项目,系统为我们生成了一个HelloWorld.java文件。他导入了两个类android.os.Bundle,HelloWorld类继承自Activity且重写了onCreate方法。
以下说明针对没有学过Java或者Java基础薄弱的人 @Override 在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。例如,void onCreate(Bundle savedInstanceState){…….}这种写法是正确的,如果你写成void oncreate(Bundle savedInstanceState){…….}这样编译器回报如下错误——The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,以确保你正确重写onCreate方法。(因为oncreate应该为onCreate) 而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。
Activity类关注创建窗口,你可以用方法Activity子类都实现的:

setContentView(int)方法定义你的UI,和用setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关操作,我们的操作会被包装成为一个意图,然后这个意图对应有相关的activity进行处理。

ContentProvider保存数据)。

更多的关于Activity类的详细信息此系列以后的文章将做介绍,如果你想了解更多请参阅相关文档。

android.os.Bundle类:从字符串值映射各种可打包的(Parcelable)类型(Bundle单词就是捆绑的意思,所有这个类很好理解和记忆)。如该类提供了公有方法——public boolean containKey(String key),如果给定的key包含在Bundle的映射中返回true,否则返回false。该类实现了Parceable和Cloneable接口,所以它具有这两者的特性。

* gen文件夹*

该文件夹下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R.java文件中定义了一个类——R,R类中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引。看我们的HelloWorld项目是不是如此,如下图:
Image:R thumb.png图2、R.java对应res

  • 通过R.java我们可以很快地查找我们需要的资源,另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。*

* Android 2.1文件夹*

该文件夹下包含android.jar文件,这是一个Java 归档文件,其中包含构建应用程序所需的所有的Android SDK 库(如Views、Controls)和APIs。通过android.jar将自己的应用程序绑定到Android SDK和Android Emulator,这允许你使用所有Android的库和包,且使你的应用程序在适当的环境中调试。例如上面的HelloWorld.java源文件中的:

import android.app.Activity;import android.os.Bundle;

这里两行代码就是从android.jar导入包。

* assets*

包含应用系统需要使用到的诸如mp3、视频类的文件。

* res文件夹*

资源目录,包含你项目中的资源文件并将编译进应用程序。向此目录添加资源时,会被R.java自动记录。新建一个项目,res目录下会有三个子目录:drawabel、layout、values。

  • drawabel-?dpi:包含一些你的应用程序可以用的图标文件(* .png、* .jpg)
  • layout:界面布局文件(main.xml)与WEB应用中的HTML类同,没修改过的main.xml文件如下(HelloWorld的就没有修改过):

main.xml
<?xml version"utf-8"?>

  • values:软件上所需要显示的各种文字。可以存放多个* .xml文件,还可以存放不同类型的数据。比如arrays.xml、colors.xml、dimens.xml、styles.xml

* AndroidManifest.xml*

项目的总配置文件,记录应用中所使用的各种组件。这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。AndroidManifest.xml将包含如下设置:application permissions、Activities、intent filters等。
如果你跟我一样是ASP.NET出生或者学过,你会发现AndroidManifest.xml跟web.config文件很像,可以把它类同于web.config文件理解。 如果你不是,你可以这样理解——众所周知xml是一种数据交换格式,AndroidManifest.xml就是用来存储一些数据的,只不过这些数据时关于android项目的配置数据。
HelloWorld项目的AndroidManifest.xml如下所示:
<?xml version"utf-8"?>

关于AndroidManifest.xml现在就讲这么多,此系列后面的文章将单独详细介绍。

* default.properties*

记录项目中所需要的环境信息,比如Android的版本等。 HelloWorld的default.properties文件代码如下所示,代码中的注释已经把default.properties解释得很清楚了:
default.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.

Indicates whether an apk should be generated for each density.

split.density=false

Project target.

target=android-7

【Android开发】Android应用程序目录结构相关推荐

  1. Android应用程序文件结构,Android项目文件及应用程序—目录结构详解

    1. src目录:是源代码目录,所有允许用户修改的java文件和用户自己添加的java文件都保存在这个目录中.如建立EditView工程,ADT根据用户在工程向导中的"Create Acti ...

  2. Android开发:程序目录结构详解:activity主要方法等

    HelloWorld程序的目录结构概述 我们可以在文件夹中看到,HelloWorld程序的目录主要包括:src文件夹.gen文件夹.Android文件夹.assets.res文件夹. AndroidM ...

  3. Android 8.0学习(32)---Android 8.0源码目录结构详解

    Android 8.0源码目录结构详解 android的移植按如下流程:     (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来.     (2)正确挂载文件系统 ...

  4. android做拨号程序代码,Android开发手机拨号程序实现实例源码介绍

    Android开发手机拨号程序实现实例源码介绍,在上一篇文章中,我们实现了第一个程序:helloWorld,并成功测试完成.还给大家介绍了Android项目结构和说明.现在写一个手机拨号程序: 首先, ...

  5. Android开发 ---如何操作资源目录中的资源文件2

    Android开发 ---如何操作资源目录中的资源文件2 一.颜色资源管理 效果图: 描述: 1.改变字体的背景颜色 2.改变字体颜色 3.改变按钮颜色 4.图像颜色切换 操作描述: 点击(1)中的颜 ...

  6. Android Studio “Project Structure”选项目录结构显示异常

    Android Studio "Project Structure"选项目录结构显示异常 参考文章: (1)Android Studio "Project Structu ...

  7. Android开发——Android手机屏幕适配方案总结

    0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...

  8. 关于python中程序流程结构-四、python基础(程序目录结构规范)

    程序目录结构: 设计一个层次清晰的目录结构,就是为了达到以下两点: 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速 ...

  9. [填坑手册]小程序目录结构和组件化使用心得

    小程序目录结构 关于小程序的目录结构,可以说一开始大家都有各自的开发习惯和命名规则,但一旦项目变得复杂庞大的时候,你就发现管理起来和后期维护变得很麻烦,如果是 协同开发 的话,更容易出现 " ...

  10. Electron教程-程序目录结构

    Electron教程-程序目录结构 程序目录结构 主进程 渲染进程 主进程模块目录 1.通用模块 2.日志模块 3.配置模块 4.进程通信模块 5.应用间通信模块 6.窗口管理模块 渲染进程模块目录 ...

最新文章

  1. 六行代码安装 GPU版本的TensorFlow
  2. 用Tableau画圆形网络关系图
  3. Framebuffer的配置及应用——先转载留着,以后一定要弄懂
  4. linux磁盘信息文件,Linux查看硬盘信息方法总结归纳
  5. SAP UI5 的 兼容性规则 Compatibility Rules
  6. 第六节:又一种新的数据类型:元组Tuple
  7. 恒大与小米洽谈出售恒大汽车65%股份?恒大:有过初步交流,没深谈
  8. 推荐一个Silverlight多文件(大文件)上传的开源项目(转载)
  9. 《编程之美》第2刷勘误
  10. python求一个数的因子_python语言求因数方法的实现源码
  11. Pytorch——计算机视觉工具包:torchvision
  12. rx560d linux 图形设计,RX560D与560区别对比:RX 560D和RX 560哪个好
  13. 记一次阿里巴巴电话面试题
  14. “新元宇宙”奇科幻小说原创作品系列连载《地球人奇游天球记》第三回零点惊魂
  15. java写一个接口_一个标准的java接口写法是怎样的?java对外接口怎么写?
  16. Hybrid eye center localization using cascaded regression and hand-crafted model fitting
  17. 字和词语联合训练的词向量模型
  18. HDU 2708 Vertical Histogram 【模拟 输出格式】
  19. 有能力的人从不抱怨大环境!
  20. WebRTC学习06----1对1视频通信实例

热门文章

  1. Ajenti-Linux控制面板之自动化运维工具
  2. OpenLayers学习笔记5——使用jQuery UI实现查询并标注(UI篇)
  3. 腾讯2016春招之算法编程解析
  4. 0330Cache Buffers chains与共享模式疑问
  5. qqsafe病毒 arp网站挂马 原理剖析-786ts.qqsafe-qqservicesyydswfhuw8ysjftwf.org(转载)
  6. 实验——Windows常用网络测试命令
  7. 帆软报表(finereport)单元格函数,OP参数
  8. postman--安装及Interceptor插件
  9. 3 Python os 文件和目录
  10. Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法笔记-协议与分类...