Android项目具有其自身的结构规范,完好的遵循结构规范,可以让开发事半功倍。下图分别从Android视图和Project视图展示了Android项目的项目结构:
图中左侧是Android视图,右侧是Project视图。从两个结构图的对比,可以发现Android视图更加关注Android开发工作,而Project视图更加关注整体结构,虽然两个视图有一些不同,但主体结构并没有什么区别。
接下来,主要通过Android视图,描述一下Android项目中各个目录的用途和含义,明白Android视图中各目录的用户和含义后,找到Project视图中的对应目录就不是什么难事儿了。
项目结构:
APP:Android项目代码,通常的编码工作都在这里进行。
manifests:存放AndroidManifest.xml文件,此文件是Android项目中的配置清单文件。因为Android项目的模型是一个父类调用子类的模型,简单来说,这个模型是由开发者继承Android系统提供的父类来实现App自己的子类,然后Android系统在核实的时候去调用开发者实现的App。所以这个配置清单文件就十分重要,只有通过这个文件,Android系统才知道开发者的应用里到底有些什么内容,开发者要在此文件中申明应用包含的组件。
java:存放Android项目中的java代码。
<包名>:存放java代码。
<包名>(androidTest):存放Android 测试代码。
<包名>(test):存放Unit测试代码。
res:存放Android项目所需资源文件。
drawable:存放图片资源文件,在Android系统中,Google推荐使用png格式的图片资源,在此目录下,不同屏幕密度的同名图片资源将以文件夹格式显示。
layout:存放布局资源文件,在此目录下,不同屏幕尺寸的同名布局资源将以文件夹格式显示。
menu:存放菜单资源文件,在此目录下,不同屏幕尺寸的同名菜单资源将以文件夹格式显示。
mipmap:存放图片资源文件,约等同于drawable目录,此目录在Android 4.2版本被引入,Android对此目录中的图片资源提供了更好的缩放性能。
values:存放值资源,在此目录下,同名同类型的资源将以文件夹格式显示。
colors.xml:图片资源文件
dimens.xml:距离资源文件
string.xml:字符串资源文件
style.xml:样式资源文件
Gradle:Android项目构建文件,存放Gradle构建文件以及其他配置文件。
多终端设备支持
在Android系统中,存在着各式各样的屏幕尺寸和各式各样的系统版本。也就是人们所说的碎片化严重。针对这个问题,Google其实已经提供了非常完好的技术支持。比如:
多屏幕密度支持
在Android设备上,关于屏幕有两个参数,一个是尺寸,如4.7寸,5.2寸,一个是分辨率,如768 x 1280, 480 x 800。尺寸表示屏幕的物理大小,分辨率表示屏幕的像素点数量,3.8寸屏幕具有768 x 1280的分辨率和7寸屏幕具有768 x 1280的分辨率,显然显示效果是不同的。这个不同就是因为屏幕密度引起的,简单的可以把屏幕密度理解为单位面积上像素点的数量。
以图片资源为例,Andorid提供了针对不同屏幕密度的图片适配支持,只需要对目标资源文件夹进行不同的命名就可以简单实现。下面列举出了常用的图片适配支持:
drawable:通用图片资源目录
drawable-nodpi:不需要缩放的图片资源目录
drawable-ldpi:低屏幕密度图片资源
drawable-mdpi:中屏幕密度图片资源
drawable-hdpi:高屏幕密度图片资源
drawable-xhdpi:超高屏幕密度图片资源,在这之上还有(drawable-xxhdpi,drawable-xxxhdpi)
多屏幕尺寸支持
除了对屏幕密度提供了完好支持,Android系统也对屏幕尺寸提供了完好吃吃,以布局文件为例:
layout:通用布局文件资源
layout-land:宽屏布局文件资源
layout-small:小屏幕布局文件资源
layout-w820dp:屏幕宽度为820dp的布局文件资源
多语言支持
Android系统作为全球智能设备占有率最高的系统,对多语言的支持自然必不可少,以值资源文件为例:
values:通用值资源
values-es.xml:西班牙语言环境值资源
values-zh.xml:简体中文语言环境值资源
多系统版本支持
为了解决系统碎片化,那么多系统版本的支持自然必不可少,以值资源文件为例;
values:通用值资源
values-v21.xml:Android 5.0及以上版本的值资源
度量单位
很多Android初学者总是不明白在Android系统中的度量单位,下面对一些常见的度量单位进行解释:
dp:可以简单理解为屏幕密度,1dp在高屏幕密度和低屏幕密度的设备上的表现是不同的,为了尺寸能随屏幕密度的变动而变动,一直保持与屏幕的比例,通常来说都建议只用dp作为度量单位。
dip:等同于dp,只是换了一个马甲而已。
sp:可以简单理解为绝对的像素,sp不随屏幕密度的变化而变化,在不同设备间一直保持固定大小,对于希望保持固定大小的内容,可以使用sp作为度量单位,例如在小屏幕上对文字使用dp,可能因为屏幕过小,而导致文字等比缩放后,文字过小而无法阅读的情况,这时候,使用sp将保持文字在不同设备上的大小是一致的.
px:忘记这个在web开发中最常用到的单位吧,在Android系统中,它是不被推荐使用的,所以它的含义,也就不解释了,希望所有Android开发者都能忘掉它。
欢迎转载,转载同时请尊重版权,附上本文原文链接:点击这里
==============================
更多内容,欢迎查看本人博客:林彦君的博客
==============================