Android Studio 对资源分包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zgcqflqinhao/article/details/77571441

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

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


1 建立资源文件夹



可以看到不只是 layout 文件夹,还有 drawable 、 values 文件夹都可以分包。需要注意的是布局 xml 文件必须放在名为 layout 的文件夹下,也就是说比如 activity_5.xml 必须放在 five--->layout 目录中,不能直接放在 five 目录下,否则系统会找不到这个布局文件。原先的 layout 文件夹可以保留,可以放一些公用的 layout,如果没有东西的话可以删除。

2 配置 app.gradle

app 目录下的 gradle 添加如下代码:
    android {
        ...
        ...
        sourceSets {
            main {
                res.srcDirs = [
                        'src/main/res',
                        '/src/main/res/layout/',
                        '/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 总结

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




猜你喜欢

转载自blog.csdn.net/zgcqflqinhao/article/details/77571441