Android Studio 對資源分包
阿新 • • 發佈:2018-11-01
寫程式碼的童鞋肯定都會在專案越寫越大、越寫越複雜後慢慢覺得,就算自己再怎麼注意命名規範,再怎麼把註釋寫詳細,回來來找一個 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
注意與上圖的結構對應,‘/src/main/res/’ 最好是放在首位。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' ] } } }
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,直到最後一個就退出: