Contents

好吧,这个功能需求也是因为作为一个重度强迫症患者,非常想要把layouts中的文件分类整理下。否则看到一堆Activity和Fragment等文件混在一起特别难受。更重要的原因是,如果你的工程交给别人维护,别人看到一堆布局文件压根不知道从哪里下手。又是经过一番折腾,总算把文件的布局整理成我想要的样子了。

先来看一张效果图:

下面我们就来详细看下如何实现的吧!

说到布局文件的整理,一般有两种:

  • 按照文件类型:基本上分为Activity、Fragment和views等
  • 按照页面类型:你的工程有几个大的页面,每个页面下面又有多少个子页面,可以按照这种模块的方式分类整理下。
    当然本文中介绍的就是采用第二种方式。

说点题外话,我最开始的时候在StackOverFlow上面搜到了两种方法,一种方法是用一个plugin:

I use Android File Grouping plugin for Android Studio.It doesn’t really allows you to create sub-folders, but it can DISPLAY your files and resources AS they are in different folders. And this is exactly what I wanted.
You can install “Android File Grouping” plugin by Android Studio -> File -> Settings -> Plugins.

但是这种方法经过实际认证,好像在1.3版本之后的AS就不能用了。下图就是我安装的版本,看到安装了之后,左侧的导航栏中根本没有other setting的入口。

我还专门去问了这个插件的开发者,告诉他我的1.4.1版本的AS没有效果,然后作者给我推荐了另外一种方法,可能稍微麻烦一点,但是确实有效。其实也是在StackoverFlow中赞同数比较高的回答。下面我们就详细一步一步来吧:

  1. 先说一个大前提,这种方法必须要你的AS设置成Project模式,而不是Android模式
  2. 把你的整个Layouts文件夹拷贝出来做一个备份(备份永远是我们在做尝试之前最重要的一件事情!!我一般习惯把整个工程也备份一下)
  3. 整个删除你的Layouts文件夹(确保你至少做了第1步的文件夹备份
  4. 右键你的res文件夹,然后New –> directory
  5. 命名为Layouts(其实你也可以起成另外的名字,无关紧要了)
  6. 右键你刚建好的Layouts文件夹,New –> directory(这里面就要建我们说的第1层目录了,按照我的习惯,这一层的文件夹就是我们的工程的几大模块的分类了。当然你也可以按照Activity和Fragment来命名)。
    这里插播一下,我当时直接在AS中操作的话,是会出现新建的目录是Layouts.mainpage.layout的格式,而不是用树形结构一层层打开的,后来我就直接在电脑的文件系统中手动新建文件夹,目的是一样的
  7. 在你第5步新建好的文件夹中继续新建一个文件夹,命名为layout这一步骤非常重要!这一步骤非常重要!这一步骤非常重要!
  8. 从第1步备份的文件中把相应的文件拷贝到这个layout文件夹中
  9. 重复第5到第7步,把所有的布局文件分类存放好。
  10. 打开build.gradle文件(注意这里会有两个build.grade文件,我们要改变的是工程里面的那个),然后添加进去下面的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sourceSets {  
main {
res.srcDirs =
[
'src/main/res/layouts/mainpage',
'src/main/res/layouts/investment',
'src/main/res/layouts/productlist',
'src/main/res/layouts/myaccount',
'src/main/res/layouts/setting',
'src/main/res/layouts',
'src/main/res'
]
}
}

添加后的build.gradle文件类似这个样子

需要特别注意的是:代码中一定要把 src/main/res/layoutssrc/main/res 两行代码写在最后面!!!

最后重启一下AS应该就ok了~

Contents