AndroidStudio笔记(4)编码效率+1 的 File Templates
前言
这一篇是接着 AndroidStudio笔记(3)的,在上一篇中我们使用了 Live Templates的关键字来快速补全和生成代码,那有没有更近一步的骚操作?比如创建文件?答案是肯定的,那就是 File Templates。先看看今天的成果物预览图,如果不感兴趣就可以不看下去。
- 一键创建 TestViewPagerAdapter
- 创建RecyclerViewAdapter
正文
File Templates 的入口
File Templates 有两个入口。
-
- File -> New -> Edit File Templates
-
- Settings -> Editor -> File and Code Templates
简单创建 ViewPagerAdapter File Templates
先来试试水,点击左上角的加号,新建一个模板,名字输入为 : ViewPagerAdapter,将编写好的模板代码放到内容框中:
代码模板:
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为我们提供了一些占位符,其实我们只需要按照格式,定义没有的占位符,那么就会显示相应的输入框了,如下:
进阶创建 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 文件,我为了演示,已经是提前创建好了。
来看看成果吧:
看看,的确是达到了我们想要的结果,是不是节省了大量的时间?快来试一试吧!
最后
总结与结束
File Templates这个东西并不难,难的是我先要有代码,然后一步一步的改造成File Templates,个人也希望大家都能有自己的File Templates,我们不应该把大多数时间浪费到重复性的工作上。
另外就是File Templates是可以导出,不用怕丢失,所以我们可以放心大胆的收集和编写自己的File Templates,具体导出方法如下:
彩蛋
另外,相信大家也发现了,我们在使用 File Templates 的时候我们需要先创建好相应的东西,如 bean、layout等,有没有一种方式能够让我省去这些创建步骤呢?答案是肯定的,敬请期待我的下一篇文章。
我的博客地址,第一时间会将文章发布在上面。
我的GitHub地址,所有文章中的源码都在这里。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android中的异步处理技术之IntentService
目录 定义 IntentService为Service的子类,它能够进行耗时任务。 原理 IntentService具有和Service一样的生命周期,同时提供了在后台线程中处理异步任务的机制,与HandlerThread类似,IntentService也是在一个后台线程中顺序执行所有任务,我们通过给Context.startService传递一个Intent类型的参数可以启动IntentService的异步执行,如果此时IntentService正在运行中,那么这个新的Intent将会进入队列进行排队,直到后台线程处理完队列前面的任务;如果此时IntentService没有在运行,那么将会启动一个新的IntentService,当后台线程队列中所有的任务处理完之后,IntentService将会结束它的生命周期,因此IntentService不需要开发者手动结束。 实现 IntentService是一个抽象类因此我们需要继承IntentService并实现它的onHandleIntent方法,并在这个方法中实现后台处理的业务逻辑,同时在子类的构造方法中需要调用super(String...
- 下一篇
Retrofit2源码解析(一)
本文基于Retrofit2的2.4.0版本 implementation 'com.squareup.retrofit2:retrofit:2.4.0' Retrofit2底层基于OkHttp3,是对利用OkHttp3请求网络的一种封装,可以使我们避免写很多重复的调用网络请求的代码,同时灵活性很高,可以定制自定义的OkHttpClient、自定义的数据解析转换器(比如Gson、Jackson等)、自定义的请求转换器(比如结合RxJava)。 Retrofit2的另一个特点就是使用运行时注解,我们在使用时可以根据需要来利用注解将我们的业务调用接口转换成Http请求的接口。 下面先来看看我们使用Retrofit2发起网络请求的步骤 (1)创建我们的具体业务接口,这里比如我们调用淘宝的IP地址库 public interface MyService { @GET("getIpInfo.php=11.11.11.11") Call<IpBean> getData(); } (2)创建Retrofit retrofit = new Retrofit.Builder() .baseUr...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启