AndroidStudio筆記(4)編碼效率+1 的 File Templates
前言
這一篇是接著 AndroidStudio筆記(3)的,在上一篇中我們使用了 Live Templates的關鍵字來快速補全和生成程式碼,那有沒有更近一步的騷操作?比如建立檔案?答案是肯定的,那就是 File Templates。先看看今天的成果物預覽圖,如果不感興趣就可以不看下去。
- 一鍵建立 TestViewPagerAdapter

建立TestViewPagerAdapter演示
- 建立RecyclerViewAdapter

建立RecyclerViewAdapter演示
正文
File Templates 的入口
File Templates 有兩個入口。
-
- File -> New -> Edit File Templates

Edit File Templates

File Templates
-
- Settings -> Editor -> File and Code Templates

File and Code Templates
簡單建立 ViewPagerAdapter File Templates
先來試試水,點選左上角的加號,新建一個模板,名字輸入為 : ViewPagerAdapter ,將編寫好的模板程式碼放到內容框中:

ViewPagerAdapter create
程式碼模板:
package ${PACKAGE_NAME}; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import java.util.ArrayList; import java.util.List; /** *Created by ${USER} on ${DATE} */ public class ${NAME} extends FragmentStatePagerAdapter { private List<Fragment> mFragments = new ArrayList<Fragment>(); public ${NAME}(FragmentManager fm, ArrayList fragmentArrayList) { super(fm); this.mFragments = fragmentArrayList; } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } }
從上面的程式碼可以看出,事實上和我們平常寫的程式碼沒有什麼區別,唯一不同的就是一些佔位符,而AS又為我們內建了一些佔位符
佔位符 | 含義 | |
---|---|---|
${PACKAGE_NAME} | 包名 | |
${NAME} | 彈出的視窗中輸入的檔名稱 | |
${USER} | 當前電腦的登陸使用者的名稱 | |
${DATE} | 當前如期 | |
${TIME} | 當前時間 | |
${YEAR} | 當前年份 | |
${MONTH} | 當前月份 | |
${MONTH_NAME_SHORT} | 月份的前三個單詞,在中文中無區別,如:九月 | |
${MONTH_NAME_FULL} | 月份的全稱,如:九月 | |
${DAY} | 號數,一個月中的幾號 | |
${DAY_NAME_SHORT} | 星期幾的前三個單詞,在中文中無區別,如:星期四 | |
${DAY_NAME_FULL} | 星期幾的全稱,如:星期四 | |
${HOUR} | 當前小時 | |
${MINUTE} | 當前分鐘 | |
${PROJECT_NAME} | 當前專案名稱 |
來看看我們的成果吧。

建立TestViewPagerAdapter演示
看到這裡,可能大家會有一個疑問,既然能通過 {NAME} 這樣通過我們的輸入來替換一些屬性呢?這就是我們接下來的內容了,建立一個 RecyclerView 的Adapter。
前面說道,AS為我們提供了一些佔位符,其實我們只需要按照格式,定義沒有的佔位符,那麼就會顯示相應的輸入框了,如下:

Des

Create Des
進階建立 RecyclerView.Adapter
還是和前面一樣的步驟,建立新的 Code File Templates,複製下面的程式碼塊放入內容區:
package ${PACKAGE_NAME}; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import java.util.ArrayList; import java.util.List; /** *Created by ${USER} on ${DATE} */ #parse("File Header.java") public class ${NAME} extends RecyclerView.Adapter<${NAME}.${VIEW_HOLDER}>{ private List<${BEAN_NAME}> mDatas = new ArrayList<>(); @Override public ${VIEW_HOLDER} onCreateViewHolder(ViewGroup parent, int viewType) { return new ${VIEW_HOLDER}(LayoutInflater.from(parent.getContext()). inflate(R.layout.${LAYOUT_NAME}, parent, false)); } @Override public void onBindViewHolder(${NAME}.${VIEW_HOLDER} holder, int position) { } @Override public int getItemCount() { return mDatas.size(); } public void addItems(List<${BEAN_NAME}> datas){ this.mDatas.addAll(datas); notifyDataSetChanged(); } class ${VIEW_HOLDER} extends RecyclerView.ViewHolder { ${VIEW_HOLDER}(View itemView) { super(itemView); } } }
佔位符解釋
名字 | 含義 |
---|---|
${NAME} | 檔名、類名 |
${VIEW_HOLDER} | ViewHolder的類名 |
${BEAN_NAME} | 實體類的名字 |
${LAYOUT_NAME} | 佈局的名稱 |
要使用這個模板,我們需要先建立 bean 和 layout 檔案,我為了演示,已經是提前建立好了。
來看看成果吧:

建立RecyclerViewAdapter演示
看看,的確是達到了我們想要的結果,是不是節省了大量的時間?快來試一試吧!
最後
總結與結束
File Templates這個東西並不難,難的是我先要有程式碼,然後一步一步的改造成File Templates,個人也希望大家都能有自己的File Templates,我們不應該把大多數時間浪費到重複性的工作上。
另外就是File Templates是可以匯出,不用怕丟失,所以我們可以放心大膽的收集和編寫自己的File Templates,具體匯出方法如下:

匯出
彩蛋
另外,相信大家也發現了,我們在使用 File Templates 的時候我們需要先建立好相應的東西,如 bean、layout等,有沒有一種方式能夠讓我省去這些建立步驟呢?答案是肯定的,敬請期待我的下一篇文章。
ofollow,noindex">我的部落格地址 ,第一時間會將文章釋出在上面。

FullScreenDeveloper