Android 入门——项目结构目录、文件详解

引言

无论是你的第一个Android项目——“hello world!”,还是复杂精美的商业APP,每一个Android程序都拥有一系列的核心目录结构和文件,他们分别用于定义应用程序的功能,有一些目录是Ide自动为我创建的,有些则是默认生成的,有些是ide自动配置不能去修改,有些则是手动创建的。

一AndroidManifest.xml清单文件(系统自动生成)

Android应用的清单文件为一种特定格式的XML文件,对于每一个app是必不可少的,所以你千万不要去改变他的名称和文件类型,你只能去编辑文件里的内容。清单文件相当于app一个身份标识,包含了当前APP的版本、名称、所有具有的权限、运行APP的硬件需求、Android系统的特性(如多点触控)、拥有的Activity、服务、广播、内容提供器等,总之很重要,如果你想去学习别人的app,建议你首先去看下清单文件,你会大概地了解到你想要找的内容大概在哪里。清单文件下最顶层的节点是manifest,顶层节点还有其他子级节点,每一个节点里还有各种属性,在这没法一一列出主要讲的是结构。

1清单文件的常用二级节点

  1. :这个节点主要是定义app的Android系统版本的信息。android:minSdkVersion:最低兼容版本 android:targetSdkVersion:最佳编译版本,一般取最高版本编译;android:maxSdkVersion:最高兼容版本 。
  2. :从Android系统本身定义好了的权限,选择你所需要的权限,即在安装时首先弹出的Activity所提示的权限信息.比如定义了拥有拨打电话的权限。
  3. :定义app所需要的硬件需求和特性,比如定义了必须具有摄像头功能。
  4. **:**app的配置通过其相关属性定义的、比如说是否允许备份、app显示的名称、图标、样式等等。如。

2 清单文件的常用三级节点

主要是在application节点里有几个常用的三级节点,*Activity的信息, * 服务的信息, 广播接收者,内容提供者, 引用的库等等。当然在这些三级节点下还可以嵌套四级节点,比如说* *意图过滤器等等。

二gen文件夹下的R.java文件(自动生成不需手动编辑)

gen保存ADT插件自动生成的代码文件,里面的R.java将保存所有的资源Id。(关于资源id命名需注意资源文件只能以小写字母和下划线做首字母,随后的名字中只能出现 [a-z0-9_.] 这些字符)

三libs文件夹

支持的jar包,添加后会被自动添加到 android depend目录下

四bin文件夹

保存编译后的文件,比如生成的apk文件等。

五src文件夹

保存java代码文件,如实现accivity、服务、等等一切java代码。

五res文件夹,存放所有的资源文件。包括图片、音乐、数据库、布局等等。

1 res/assets文件夹:可以存放项目一些较大的资源文件

与drawable文件夹一样也是存放资源的文件夹,不同的是,放在assets文件下的资源,并不会在R文件中生成id,这些文件可以不被压缩打包至apk。例如:音乐、数据库文件等。

2 res/drawable文件夹(包含drawable-hdpi、drawable-ldpi、drawable-xhdpi等等)

保存不同分辨率图片资源,如字面意思,h代表高分辨率等等,当你在不同分辨率的文件下存放了资源之后,当你的app运行在不同分辨率的设备时候,Android会自动去调用合适的资源,因为存放在drawable文件下的所有资源都会在R文件中生成对应的Id,所以我们可以使用Resources.getDrawable(id)可以获得对应资源。

3 res/layout文件夹

存放所有的布局文件,主要是用于排列不同的显示组件,在Android程序中要读取此XML文件来实现布局的效果。layout文件夹也有类似drawable文件夹一样,也可以实现不同分辨率的布局、甚至设备横竖屏的不同布局。如:layout-land:存放横屏布局文件;layout-prot:存放竖屏布局文件

4 res/values文件夹: 存放一些资源文件的信息,用于读取文本资源

  1. strings.xml文件:定义string字符串,可以在资源xml文件中”@string/app_name”引用。
  2. styles.xml文件:定义了样式。
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="itcastText" parent="@style/Text">
        <item name="android:textSize">18px</item>
        <item name="android:textColor">#008</item>
    </style>
</resources> 
  1. arrays.xml文件:定义数组
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="colors">
        <item>red</item>
        <item>yellow</item>     
        <item>green</item>     
        <item>blue</item>   
    </string-array>
</resources>
  1. colors.xml 定义颜色和颜色字串数值,你可以在Activity中使用getResources().getDrawable(resourceId) 以及getResources().getColor(resourceId)取得这些资源。
<resources>
  <color name="contents_text">#ff000000</color>
</resources>
  1. dimens.xml 定义尺寸数据,在Activity中使用getResources().getDimension(resourceId) 取得这些资源
<resources>
  <dimen name="key_height">50dip</dimen>
</resources>

5 res/menu文件夹

存放menu的布局文件,(正确创建文件的方法:new Folder,名字menu,new Other——Android——XML,选择menu类型,填写名称,确定即可)。菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用menu标签作为根节点。除了menu标签外,还有另外两个标签用于设置菜单项和分组,这两个标签是itemgroup

6 res/raw文件夹(一般需要手动建立)

自定义的一些原生文件所在目录,像音乐、视频等文件格式。存放直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID也可以用,即R.raw.somefilename,Resources.getRawResource()方法可以获得这些资源。

7res/xml文件夹(一般需要手动建立)

用户自定义的XML文件,所有的文件在程序运行时编译到应用程序之中,在程序运行时可以使用Resources.getXML()方法获取

8 res/anim文件夹(一般需要手动建立)

用于定义动画对象。存放定义了补间动画(tweened animation)或逐帧动画(frameby frame animation)的XML文件。(该目录下也可以存放定义property animations的XML文件,但是最好还是分开存放)

9 res/color文件夹(一般需要手动建立)

存放定义了颜色状态列表资源(ColorState List Resource)的XML文件,如:在这个文件夹下放的是txt_color_selector.xml等文件,主要是用于背景色的selector,比如TextView中的textColor属性,点击改变TextView中的字体颜色。

10 res/animator文件夹(一般需要手动建立)

存放定义了propertyanimations(android 3.0新定义的动画框架)的XML文件。

PS:R文件与资源的一些关系

  1. 静态类drawable类对应res文件夹中的drawable-hdpi、drawable-ldpi、drawable-mdpi三个文件夹,drawable类中每个整型的静态常量名与这三个文件夹中的图片资源文件相同(不含扩展名),这三个文件夹中相同文件名的资源对应同一个整型变量,Android系统会根据不同类型的屏幕分辨率,自动选取合适的图片资源。
  2. 静态类layout类对应res文件夹中的layout文件夹,layout文件夹中的每个布局文件在layout类中都会有一个与文件名相同的整型静态变量。
  3. 静态类string对应res/values文件夹中每个XML文件中的字符串资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CrazyMo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值