Android Studio 对资源分包

来源:互联网 发布:淘宝 韩国二手钢琴 编辑:程序博客网 时间:2024/05/16 08:24

写代码的童鞋肯定都会在项目越写越大、越写越复杂后慢慢觉得,就算自己再怎么注意命名规范,再怎么把注释写详细,回来来找一个 item 的布局或者一个控件的 drawable 的时候还是会找上半天,因为不管是 layout 还是 drawable 目录下,资源文件总是越变越多,并且命名的相似性也可能很大。偶然间发现了一个 AS 下对资源进行分包的方法,亲测有效,下面是原文地址,我只是将自己的实践过程记录下来,以后不用到处去找。

原帖地址:https://github.com/dmytrodanylyk/folding-plugin


1 建立资源文件夹



可以看到不只是 layout 文件夹,还有 drawable 、 values 文件夹都可以分包,原先的 layout 文件夹可以保留,可以放一些公用的 layout,如果没有东西的话可以删除。

2 配置 app.gradle

app 目录下的 gradle 添加如下代码:
android {......    sourceSets {        main {            res.srcDirs = [                    'src/main/res',                    '/src/main/res/layouts/',                    '/src/main/res/layouts/one',                    '/src/main/res/layouts/two',                    '/src/main/res/layouts/three',                    '/src/main/res/layouts/four',                    '/src/main/res/layouts/five'            ]        }    }}

注意与上图的结构对应,‘src/main/res’ 最好是放在首位。

3 效果测试

每个 Activity 的代码都是差不多的,所以只贴一个:
public class Activity1 extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_1);        findViewById(R.id.iv_1).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                startActivity(new Intent(Activity1.this, Activity2.class));                finish();            }        });    }}

activity_1.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.qinshou.resourcesubcontractingdemo.Activity1">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:layout_margin="20dp"        android:text="@string/carter"        android:textColor="#000000"        android:textSize="24sp" />    <ImageView        android:id="@+id/iv_1"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:scaleType="fitCenter"        android:src="@drawable/carter" /></LinearLayout>

one 下面的 values 中的 string.xml:
<resources>    <string name="carter">文斯卡特</string></resources>

运行一下,可以看到程序正常运行,每点击一下图片跳转到下一个 Activity,直到最后一个就退出:


4 总结

这一篇应该不算是什么技术点,算是一种代码的优化吧,在写代码的同时,注重结构和规范是一种好习惯,可以让你的代码更容易被别人理解,自己回过头来看的代码的时候也会更容易翻阅,这些代码规范跟设计模式是一个道理。有可能时隔很久,自己看自己的代码都是一团糟,我们要做的就是在慢慢的积累经验的情况下尽量避免这样的情况,不仅让自己成为技术大牛,也要成为代码洁癖者。