如何在 Android 项目中将布局文件存放在不同目录中


Android Studio 下对资源进行分包

也许你曾经用过这个插件来对资源文件 layout 进行分类https://github.com/dmytrodanylyk/folding-plugin,但如今随着 AS 版本的升高,该插件已经不再支持。

now,我来分享一种比这个插件更加优秀合理地对资源进行分包,让你的资源文件看起来简明有序。
先上效果图,如下所示:

[效果图]

从图中可以看出新增了 res_core 和 res_sub 两个资源包,这样我们可以对每个模块的资源都进行具体分类,是不是心动了,赶紧照着如下配置试一试吧,别再让资源文件们“混为一潭”了。

方法很简单,配置我们的app文件夹下的 build.gradle 文件,比如我的
android { ... sourceSets { main { res.srcDirs('src/main/res', 'src/main/res_core', 'src/main/res_sub') } } }

配置完之后,sync project 一下就成功了。

补充:发现有小伙伴试验不成功,好伐,是我疏漏了,文件夹是要自己创建的,因为自己创建的文件夹 gradle 不能解析为资源文件来使用,所以需要在 build.gradle 中进行配置,这样你们就懂了吧。

如果还有问题,可以参照AndroidUtilCode的使用

原文链接:https://blankj.com/2016/09/21/android-studio-classify-src-package/

【Android Studio】分类整理res/Layouts中的布局文件(创建子目录)

u011156012 2016-01-24 20:49:15 23227 收藏 3
分类专栏: Android开发 文章标签: AndroidStudio
版权
好吧,这个功能需求也是因为作为一个重度强迫症患者,非常想要把layouts中的文件分类整理下。否则看到一堆Activity和Fragment等文件混在一起特别难受。更重要的原因是,如果你的工程交给别人维护,别人看到一堆布局文件压根不知道从哪里下手。又是经过一番折腾,总算把布局整理成这样了:

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

  1. 按照文件类型:基本上分为Activity、Fragment和views等

  2. 按照页面类型:你的工程有几个大的页面,每个页面下面又有多少个子页面,可以按照这种模块的方式分类整理下。

当然我就是采用第二种方式。

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

但是这种方法经过实际认证,好像在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的格式,而不是用树形结构一层层打开的,后来我就直接在电脑的文件系统中手动新建文件夹,目的是一样的

  1. 在你第5步新建好的文件夹中继续新建一个文件夹,命名为layout。 这一步骤非常重要!这一步骤非常重要!这一步骤非常重要!

  2. 从第1步备份的文件中把相应的文件拷贝到这个layout文件夹中

  3. 重复第5到第7步,把所有的布局文件分类存放好。

  4. 打开build.gradle文件(注意这里会有两个build.grade文件,我们要改变的是工程里面的那个),然后添加进去下面的代码:

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/layouts  和 src/main/res 两行代码写在最后面!!!

  1. 重启一下AS应该就ok了~

————————————————
版权声明:本文为CSDN博主「u011156012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011156012/java/article/details/50575117

今天来聊聊关于将Android应用程序的布局文件的存放,因为开发过程中发现有时候在同一个文件夹中存放了太多布局文件会造成很多麻烦。如果你的项目有超过30个布局,想要查找一个布局文件会让很头疼。这个问题的解决方案就是将它们分散在不同的文件夹中,gradle给我们提供了这项便利,可以将布局文件夹映射到多个文件夹当中,比如分成“activity layouts”, “fragment layouts”, “adapter layouts”等文件夹的方式。这样就可以在不同的文件夹中存放我们的布局文件了,编译也不会出问题。
如下图为范例:

要如此分目录需要做一些工作:

在res目录中创建一个名为“layouts”的目录(Directory)
在layouts文件夹下创建名为activity的资源文件夹, (要创建一个资源文件夹 Resource folder 你必须选择“New -> Folder -> Res Folder”, 然后要写对目录路径“src/main/res/layouts/activity”);
在文件夹activity中创建目录并命名为“layout ”;
为fragment 和adapter 文件夹做以上1~3同样的操作;
将布局文件分门别类放进新的文件夹中.

最后一步不要忘了要修改我们的build.gradle文件,修改一下内容:

[java] view plaincopy
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
...
}
buildTypes {
...
}
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'apt_generated']
aidl.srcDirs = ['src/main.aidl', 'apt_generated']
assets.srcDirs = ['src/main/assets']
res.srcDirs =
[
'src/main/res/layouts/activity',
'src/main/res/layouts/fragment',
'src/main/res/layouts/dialog',
'src/main/res/layouts/adapter',
'src/main/res'
]
}
}
}

编译后所有链接的目录都是正常的.

不幸的是,这种解决方式仅仅只在Project透视图当中有效。

翻译来源:http://alexzh.com/tutorials/how-to-store-layouts-in-different-folders-in-android-project/


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM