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

简介: 前言这一篇是接着 AndroidStudio笔记(3)的,在上一篇中我们使用了 Live Templates的关键字来快速补全和生成代码,那有没有更近一步的骚操作?比如创建文件?答案是肯定的,那就是 File Templates。

前言

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

  • 一键创建 TestViewPagerAdapter
创建TestViewPagerAdapter演示
  • 创建RecyclerViewAdapter
创建RecyclerViewAdapter演示

正文

File Templates 的入口

File Templates 有两个入口。

    1. File -> New -> Edit File Templates
Edit File Templates
File Templates
    1. 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} 的方式来替换相关的值,那么我们能不能像{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等,有没有一种方式能够让我省去这些创建步骤呢?答案是肯定的,敬请期待我的下一篇文章。

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

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

FullScreenDeveloper
目录
相关文章
|
网络协议 Java
【工具】Mermaid + 大模型画流程图
最近看面试文章关于TCP三次握手和四次挥手的文章,时常会看到有类似的图去描述这样的过程。当然觉得这样的图还是蛮规范的,属于流程图的一种,是否有工具可以自动生成呢?但没有细想,昨天刷V2EX看到也有老哥发出了这样的问题。于是顺着评论区大佬的回答,我GET到了一个工具Mermaid 这里三次握手的图取自小林coding的文章
2271 0
|
Ubuntu Linux
在Linux中如何解压 .xz 和 tar.xz 文件?
【4月更文挑战第17天】
16313 6
在Linux中如何解压 .xz 和 tar.xz 文件?
|
存储 安全 对象存储
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
本文详细介绍了怎样帮助新手小白从注册,购买阿里云OSS,到一步一步配置OSS做为图床,和PicGo、Typora软件连接,配置好关联之后,在使用Typora写文章时,如果需要插入图片,只需要将图片复制粘贴到Typora的编辑区域,就会自动通过PicGo上传到指定图床,自动复制外网能访问的URL并展示,简直不要太方便,极大的解决了编辑文章时复制处理图片链接的痛点。
14867 16
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
|
15天前
|
安全 Java API
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
本文系统梳理Java 8至21的演进脉络,聚焦JDK 21 LTS四大核心特性:虚拟线程(M:N轻量调度,百万级I/O并发)、模式匹配switch(类型+守卫+null安全)、结构化并发(父子任务生命周期绑定)、序列集合(统一有序集合操作)。兼顾版本战略、迁移实践与面试高频考点,助力高效掌握现代Java开发核心能力。
|
6月前
|
人工智能
# 用Prompt Engineering高效生成合规Amazon包类套图
利用Prompt Engineering,仅需1张实拍图+产品参数,即可高效生成符合Amazon美国站合规要求的包类套图。通过结构化提示词,明确主图、卖点、场景等6类图片职责,确保每张图精准传达信息,避免AI篡改产品细节,实现低成本、可复用、规模化出图,大幅提升上架效率。
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
AI内容创作Agent架构解析:基于移动端原生框架的内容特工队AI (ReelsAgent)与传统短视频工具的技术差异
传统的AI视频工具链往往基于单点功能堆栈或PC/Web端的SaaS架构,难以承载短视频营销所需的高频、高并发、全流程自动化需求。本文将从AI Agent系统架构角度,对比内容特工队AI (ReelsAgent)的移动端原生设计与现有主流工具的实现路径,以评估其在工程实践中的优劣。
879 7
|
7月前
|
机器学习/深度学习 并行计算 计算机视觉
超参数调优:Grid Search 和 Random Search 的实战对比
模型85%准确率不够看?超参数优化能释放真正潜力!本文详解Grid Search与Random Search的原理、优劣及实战对比,揭示如何通过“粗搜+精调”混合策略高效提升模型性能,从“还行”到“能打”。
594 8
|
6月前
|
Java Maven 开发工具
2 IDEA环境配置
安装IDEA并配置编码、自动导包、忽略大小写提示及Java编译级别;安装Maven并配置本地仓库与阿里云镜像;在IDEA中设置Maven环境;安装Git并配置用户信息与IDEA集成;Fork并克隆黑马商城项目,创建数据库hmall并导入SQL;修改application-dev.yaml中的数据库连接信息;启动后端项目与Nginx前端服务,确保端口无冲突。
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
1767 1
|
IDE 开发工具 Android开发
Gradle升级,Error:Connection timed out: connect. If you are behind an HTTP proxy, please configure
Gradle升级,Error:Connection timed out: connect. If you are behind an HTTP proxy, please configure
5679 0
Gradle升级,Error:Connection timed out: connect. If you are behind an HTTP proxy, please configure