AndroidStudio笔记(4)编码效率+1 的 File Templates

前言

这一篇是接着 AndroidStudio笔记(3)的,在上一篇中我们使用了 Live Templates的关键字来快速补全和生成代码,那有没有更近一步的骚操作?比如创建文件?答案是肯定的,那就是 File Templates。先看看今天的成果物预览图,如果不感兴趣就可以不看下去。

  • 一键创建 TestViewPagerAdapter
img_0a9b8efbb0b0cf1a0f9351d2ce1ec835.gif
创建TestViewPagerAdapter演示
  • 创建RecyclerViewAdapter
img_0e72b859026bb77eae0657c0fce33730.gif
创建RecyclerViewAdapter演示

正文

File Templates 的入口

File Templates 有两个入口。

    1. File -> New -> Edit File Templates
img_70270c12c3df94cdce69fead7f871203.png
Edit File Templates
img_8ee8eca4009c1c29faaffbbee5d07ecc.png
File Templates
    1. Settings -> Editor -> File and Code Templates
img_d96eed0c786ba778db72dfe37f6dacb3.png
File and Code Templates

简单创建 ViewPagerAdapter File Templates

先来试试水,点击左上角的加号,新建一个模板,名字输入为 : ViewPagerAdapter,将编写好的模板代码放到内容框中:

img_5eb0cfa8053f178aece177ac18a49544.png
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}当前项目名称

来看看我们的成果吧。

img_0a9b8efbb0b0cf1a0f9351d2ce1ec835.gif
创建TestViewPagerAdapter演示

看到这里,可能大家会有一个疑问,既然能通过 {NAME} 的方式来替换相关的值,那么我们能不能像{NAME}这样通过我们的输入来替换一些属性呢?这就是我们接下来的内容了,创建一个 RecyclerView 的Adapter。

前面说道,AS为我们提供了一些占位符,其实我们只需要按照格式,定义没有的占位符,那么就会显示相应的输入框了,如下:

img_37487337f8a5384b07aa67a9add91a06.png
Des
img_8224ff10a17e6cbc1a12763c1111d82d.png
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 文件,我为了演示,已经是提前创建好了。

来看看成果吧:

img_0e72b859026bb77eae0657c0fce33730.gif
创建RecyclerViewAdapter演示

看看,的确是达到了我们想要的结果,是不是节省了大量的时间?快来试一试吧!

最后

总结与结束

File Templates这个东西并不难,难的是我先要有代码,然后一步一步的改造成File Templates,个人也希望大家都能有自己的File Templates,我们不应该把大多数时间浪费到重复性的工作上。

另外就是File Templates是可以导出,不用怕丢失,所以我们可以放心大胆的收集和编写自己的File Templates,具体导出方法如下:

img_5958a550a780d4aba7529808b3e9fd01.png
导出

彩蛋

另外,相信大家也发现了,我们在使用 File Templates 的时候我们需要先创建好相应的东西,如 bean、layout等,有没有一种方式能够让我省去这些创建步骤呢?答案是肯定的,敬请期待我的下一篇文章。

我的博客地址,第一时间会将文章发布在上面。

我的GitHub地址,所有文章中的源码都在这里。

img_1ee92a858822d3b1d90a45e40e7b1042.jpe
FullScreenDeveloper
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值