文章目录
在整个Android开发的项目中,我们需要了解项目中那些文件或者文件夹呢?下面就跟大家一起探讨一下
一、项目结构解释
下面先引用一下前辈的链接,我觉得他写的很详细了
来自“果冻柠檬”先生的——Android Studio 项目目录结构
这里,我就不做一一解释了,如有疑问,欢迎与我一起探讨
第二部分才是今天的重头戏
二、我需要关注哪些文件或文件夹
既然我们要学习Android开发,那肯定就得知道哪些文件或文件夹是我们经常用到的,什么情况下会用到,下面我们就来一一分析
这里先截一张图
-
libs
:该目录是让你存放一下第三方架包(第三方架包
的意思是非自己开发的一种项目库,作用是让自己引用别人的这种库来达到自己的目的)的,后缀名一般为.jar
-
com.chy.hellowworld
:这是首次创建项目的时候同时创建的一个包路径,这里是盛放我们写代码的java文件
(也可以放kotlin语音的文件),一般而言这个包路径(也称包名,以后均以包名称之)也是默认的应用ID
(也称app的唯一标识
,每款应用都有自己的唯一标识,再配合签名文件(后面会用到的,后面再讲签名文件),这样才能毕竟其他应用被覆盖安装,打个比方:如果微信和qq都是用同样的唯一标识,那么你的手机里面要么只有微信,要么只有qq),这个包名是在创建项目的时候才需要填写的,也可以在以后更改,不过不建议 在以后更改,因为一旦你更改这个包名,稍有不慎就会导致整个app都无法编译,所以建议是在前期就想好,一旦定下来就别再更改了 -
drawable
和mipmap
:如果使用过eclipse开发Android程序的小伙伴肯定知道,在那个版本的开发历程中,我们所有的图片文件都是放到对应的drawable
文件中,因为那个时候还没有mipmap
这些文件夹,好了,废话不多说,其实呢drawable
和mipmap
这两种文件夹的区别不大,它们两者都是可以放置图片资源的,只是drawable
这个文件夹可以创建一些.xml
(使用xml格式编写的一些图片资源)结尾的资源文件,mipmap
这些文件夹则没有这个功能。
你们应该也留意到了drawable
这些文件夹中有一个有-v24
尾巴的,那这个尾巴的区别是什么意思呢?其实也很简单,没带尾巴的,是表明里面的所有资源文件,在SDK版本为24以下的都有效,就是在Android7.0以下都会有效的,那个带尾巴的就是代表,在SDK版本为24以上的才有效,所以,编写或者放置图片资源的时候就得注意放置的文件夹了,可能一个不留神就让你编写的程序找不到图片资源了。
可能你们也留意到了,那6个mipmap
文件夹都有尾巴,那这些尾巴都是什么意思呢,下面来听我一一解释:“
mipmap-anydpi-v26
”:这个文件夹是一个在SDK版本为26以上会对所在的资源文件进行机器自适应适配的,是在SDK 26以上的版本才会有效的喔,也就是Android8.0以上的手机才会有效的,在此版本以下的Android版本是无法使用的,以下这些文件夹就没有自适配功能,但是它们的尾巴就是为了尽可能的对不同分辨率的机器进行自适应:“
mipmap-hdpi
”:这个文件夹对应的机器的分辨率为WVGA (屏幕分辨率480×800)
和FWVGA (屏幕分辨率480×854)
“mipmap-mdpi
”:这个文件夹对应的机器的分辨率为HVGA (屏幕分辨率320×480)
“mipmap-xhdpi
”: 这个文件夹对应的机器的分辨率为720P(屏幕分辨率1280×720)
"mipmap-xxhdpi
”:这个文件夹对应的机器的分辨率为1080p(屏幕分辨率1920×1080)
"mipmap-xxxdpi
”: 这个文件夹对应的机器的分辨率为4K(屏幕分辨率3840×2160)
当然,你还得在上图所示的
AndroidManifest.xml
这个文件中开启自适应设置,如下图框框所示
看到这里,可能很多小伙伴就会有疑问了,不就是为了图片自适应机器而已吗?搞那么多文件夹干什么,代码做一下逻辑控制,或者对图片的命名做一点标识不就好了吗?搞那么多花样!其实,是因为Android系统开源的原因,很多开发商都去定做不同分辨率的机器来搭载Android系统来实现自己的商业目的,但是开发者又不知道有什么分辨率,如果不对上分辨率,有些app在手机上显示正常,但是到了平板上面就显得很小了,所以,谷歌为了统一一下这个尴尬的情况,就成立了这么多个文件夹了(这里纯属个人观点,仅作参考) -
layout
:这个文件夹一般是用来盛放一下与2
中所存放的继承activity类有关系的.xml
文件,通俗点说,它就是一个视图,然后加载到对应的java文件中展示给用户看或者是为用户提供交互基础的一个文件。 -
values
:一般情况下,这个文件夹只有如下图这三个文件
colors.xml
:这个可扩展标记语言文件是跟颜色
有关系的一个文件
strings.xml
:这个可扩展标记语言文件是跟字符
有字符的一个文件
styles.xml
:这个可扩展标记语言文件是跟主题
有主题的一个文件
那这三个文件存在有什么意义呢?用过智能手机的都知道,你启动的每一款App,里面都肯定会有涉及颜色和字符显示的,这三个文件就是用来存放你App中使用到的颜色、字符或主题资源的,有开发过Android程序的小伙伴可能就会问,为什么要把那些颜色、字符或者主题资源存放到这里呢,layout
文件夹下的对应的xml
文件不是可以直接编写这些资源吗?放到这里不就是画蛇添足吗?其实,这并非是画蛇添足,它的存在肯定是有意义的。
举个例子:你应客户要求开发了一个App,里面设置多个页面,然后在多个页面所对应的xml
文件中写这些颜色或者字符资源,但是有没有想过后期维护的时间成本?你难道还要一个一个xml文件去找对应的地方来修改吗?如果客户说,这个地方没改到,你是不是又需要继续查找来修改?所以这三个文件的存在就是为了解决这个窘境,一处修改,多处生效,岂不美哉?
-
build.gradle
:这文件又是干什么用的呢?而且还存在两个,这个就得当心了,千万别搞蒙了,一个是存在于project
文件夹中的,一个是存在app
文件夹中的,它们都有自己的作用。
app
文件夹中的build.gradle
,一般都是长这个样子的
而project
中的build.gradle
一般是长这个样子的
上面两张图已经对默认的gradle模块做了详细的解答,如果你还想开发这两个文件的,建议学习一下跟groovy语言,因为这两个gradle文件都是基于这个语言生成的
好了,本节就到此结束了