前言
這一篇是接着 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} | 目前項目名稱 |
來看看我們的成果吧。

看到這裡,可能大家會有一個疑問,既然能通過
{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);
}
}
}
占位符解釋
名字 | |
---|---|
檔案名、類名 | |
${VIEW_HOLDER} | ViewHolder的類名 |
${BEAN_NAME} | 實體類的名字 |
${LAYOUT_NAME} | 布局的名稱 |
要使用這個模闆,我們需要先建立 bean 和 layout 檔案,我為了示範,已經是提前建立好了。
來看看成果吧:
看看,的确是達到了我們想要的結果,是不是節省了大量的時間?快來試一試吧!
最後
總結與結束
File Templates這個東西并不難,難的是我先要有代碼,然後一步一步的改造成File Templates,個人也希望大家都能有自己的File Templates,我們不應該把大多數時間浪費到重複性的工作上。
另外就是File Templates是可以導出,不用怕丢失,是以我們可以放心大膽的收集和編寫自己的File Templates,具體導出方法如下:
導出
彩蛋
另外,相信大家也發現了,我們在使用 File Templates 的時候我們需要先建立好相應的東西,如 bean、layout等,有沒有一種方式能夠讓我省去這些建立步驟呢?答案是肯定的,敬請期待我的下一篇文章。
我的部落格位址,第一時間會将文章釋出在上面。
我的GitHub位址,所有文章中的源碼都在這裡。
FullScreenDeveloper