【入门篇】Android学习笔记——项目结构及相关基础知识

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开发者都能忘掉它。

欢迎转载,转载同时请尊重版权,附上本文原文链接:点击这里

==============================

更多内容,欢迎查看本人博客:林彦君的博客

==============================

时间: 2024-11-05 23:18:35

【入门篇】Android学习笔记——项目结构及相关基础知识的相关文章

Android学习笔记(四) JAVA基础知识回顾

一.接口 1)接口中定义的方法都是public权限,并且默认为public,而不是default. 2)接口的实现(implements)是特殊的继承,类似于父类子类的关系,可以向上转型(非常重要). 3)一个类可以实现多个接口:一个接口可以继承多个接口. 二.静态变量/方法 1)如果某方法(或变量)声明为static,则可以直接使用"类名.方法名(或变量名)"调用. 2)静态方法只能使用静态变量. 三.静态工厂模式 核心思想:把生成对象的代码(使用new来调用构造函数的方法)封装在工

APUE学习笔记:第一章 UNUX基础知识

1.2 UNIX体系结构 从严格意义上,可将操作系统定义为一种软件(内核),它控制计算机硬件资源,提供程序运行环境.内核的接口被称为系统调用.公用函数库构建在系统调用接口之上,应用软件即可使用公用函数库,也可使用系统调用.shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口 从广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并给予计算机以独有的特性(软件包括系统实用程序,应用软件,shell以及公用函数库等) 1.3  shell shell是一个命令行解

TCP/IP学习笔记(一):基础知识

[前言] 一位美女老师教这门课,上课全是英文,偶尔也蹦两句中文解释术语,不过基本不说……TCP/IP给我的第一印象是知识点琐碎,可能是因为我的知识面和知识量都很欠缺,不成体系. 老师的课件是基于<TCPIP协议族(第4版)>的,所以我就按照书的标题来记录笔记好了. 另外我还买了一本科普类的书籍<图解TCP/IP(第5版)>,还有一本教材<TCP/IP网络互连--卷I(第5版)>作为参考,不知道要看到猴年马月才能有收获. ====================我是分割线

&lt;&lt;Python基础教程&gt;&gt;学习笔记之|第01章|基础知识

本学习笔记主要用要记录下学习<<Python基础教程>>过程中的一些Key Point,或自己没怎么搞明白的内容,可能有点杂乱,但比较实用,查找起来也方便. 第01章:基础知识 ------ Jython:      Python的Java实现,运行在JVM中,相对稳定,但落后于Python,当前版本2.5,在TA(Python+Robot)会用到 IronPython:  Python的C#实现,运行在Common Language Runtime,速度比Python要快 >

慕课-《Spring入门篇》学习笔记 专题一 IOC

1.一些资源 http://spring.io/ http://projects.spring.io/spring-framework/ 2.什么是spring? 它是一个开源的框架,一个轻量级的控制反转(————达到松耦合的目的)IOc和面向切面(————)的容器框架,管理并配置应用对象的配置和生命周期. SPring带来了复杂的JavaEE开发的春天 ####################################################### 正式开始 1.接口:对应Jav

Android学习笔记(七) 布局基础

一.概念 控件布局方法,就是指控制控件在Activity当中的位置.大小.颜色以及其他控件样式属性的方法.有两种方法可以控制布局: 在布局文件(xxx.xml)中完成控件的布局. 在JAVA代码中完成控件布局. 二.分类 (其中RelativeLayout和ListView最为常用) 设置宽.高的两个重要参数:wrap_content(内容包裹).match_parent(填充).

UNIX环境高级编程学习笔记(第一章UNIX基础知识)

总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时候使用的平台是Windows+VMware+debian,使用secureCRT来连接(可以实现多个终端连接). 因为第一章是本书大概的描述,所以第一章的我打算写得详细一点,而且书本的原话占的比例会比较多,重点的东西会用粗体显示出来. 1.1  引言 所有操作系统都为他们所运行的程序提供服务.典型的

cocos2d-x学习笔记(一)C++基础知识

以下内容为部分C++基础知识点: 1.C++特点 C++是在C语言的基础上发展来的,但是并不是C++比C语言高级,两者的编程思想不一样,应用的领域也不一样.在各自的领域,谁也不能替代谁.C++相对于C主要有如下特点: 类型检查更为严格 增加了面向对象的机制 增加了泛型编程的机制 增加了异常处理 增加了运算符重载 增加了标准模板库(STL) 2.数据类型 基本类型:整型.浮点型.char类型和布尔型bool. 派生类型:指针类型(*).枚举类型(enum).数组类型([]).结构体类型(struc

Linux学习笔记 第十一课 shell基础知识

一.shell特性 1.history !! !$ !n !str 2.tab 命令补全 3.alias 和 unalias 4.通配符 * ?  [ ] 5.输入输出重定向 >, >>, <, << , 2>, 2>>, &>,&>> 二.变量      1.系统变量 set  env export 2.变量命名规则 3.取消变量  unset 4.变量引用:``  ' '  " " 三.系统和个