• 效果

android studio template模块开发_第1张图片

  • 前言

       Android很多项目的时候,很多页面的写法大致都差不多,为了提高速度,为什么我们不打造属于自己的模块化 

  

  • 简易创建一个模块

在plugins搜索加入TemplateBuider

android studio template模块开发_第2张图片

重启Android studio,指定一个文件。按下alt+T(option+t),打开templateBuider

android studio template模块开发_第3张图片

应用程序⁩ ▸ ⁨Android Studio⁩ ▸ ⁨Contents⁩ ▸ ⁨plugins⁩ ▸ ⁨android⁩ ▸ ⁨lib⁩ ▸ ⁨templates⁩ ▸ ⁨yuwenchao⁩找到demo文件(window类似)

android studio template模块开发_第4张图片

把文件夹复制出来,用studio运行。

android studio template模块开发_第5张图片

 

  • 文件和相关语法讲解

  一、通用语法

通用语法
${frameName} id为frameName的值(name)
${activityToLayout(activityName)} activity转layout
${layoutToActivity(layoutName)} layout转activity
${classToResource(frameName)} 类转换资源文件昵称

  一、ui布局语法讲解(template)

template语法
id="isMvp" id
name="is mvp" 昵称
type="boolean" 类型(boolean,string,enum)
default="true" 默认值
help="是否启动mvp架构" 注解

constraints="package"

constraints="class|unique|nonempty"

class 类

unique 唯一

nonempty 不能喂null

package 包

layout 布局

可以几个一起共用

suggest="${frameName}Presenter"
visibility="isRecyclerview" 是否显示

三、 FreeMarker语法

FreeMarker语法
${frameName} id为frameName的值(name)

<#if relativePackagehas_content>

${relativePackage}

<#else>

${packageName}

if else 语句
   
   

四、运行recipe语法

recipe语法

from="root/src/app_package/PureContract.java.ftl"

to="${baseDir}/${slashedPackageName

(contractPackageName)}/${contractName}.java" />

from文件来源什么

to创建文件目的地址

五、资源文件定义方式

package ${activityPackageName};import ${packageName}.databinding.${activityBind};import ${packageName}.R;import com.purewhite.ywc.purewhitelibrary.mvp.activity.BaseMvpActivity;<#if isMvp><#if !isFile>import ${contractPackageName}.${contractName};import ${presenterPackageName}.${presenterName};<#else>import com.purewhite.ywc.purewhitelibrary.mvp.presenter.BasePresenter;<#if isSwipe>import com.purewhite.ywc.purewhitelibrary.adapter.swipe.SwipLoadListener;<#if isRecyclerview>import ${packageName}.mvp.adapter.${adapterName};import androidx.recyclerview.widget.LinearLayoutManager;public class ${activityName} extends BaseMvpActivity<${activityBind},${basePresenter}> ${contractImp} {   <#if isRecyclerview>   private ${adapterName} adapter;      <#if isSwipe>   private SwipLoadListener swipLoadListener=new SwipLoadListener() {        @Override        public void pullDown() {        }   };      @Override    protected int getLayout() {        return R.layout.${activityLayout};    }    @Override    protected void initView() {        <#if isSwipe>        mDataBinding.swipeLayout.setOnLoadLinstener(swipLoadListener);                <#if isRecyclerview>        adapter=new ${adapterName}();        mDataBinding.recyclerView.setAdapter(adapter);        mDataBinding.recyclerView.setLayoutManager(new LinearLayoutManager(this));            }    <#if !isMvp>     @Override     protected boolean isPresenter() {         return false;     }    }

思路

1.创建文件之后,目标文件不变的方法可以直接书写

2.如果目标文件会发生变化就必须使用变量去替换

   如类名(${activityName} )

   类名databing地址(${packageName}.databinding.${activityBind})

 

六、globals文件思路

1.这个共有文件,如果很多资源文件会使用到共同方法,可以把这个方法写再globals文件下

2.如果这个名字或者参数,方法比较长,也可以考虑写再这个文件下

 

demo地址  https://github.com/YwcSillyWhite/templateMvp 

 

 

有什么不懂的,或者有好的提议可以添加qq 1075770029,或者加qq群127299409,欢迎大家一起讨论

更多相关文章

  1. Android Studio 之 AndroidManifest.xml文件中的android:label属
  2. android 创建文件夹失败
  3. Android TV蓝牙模块
  4. Android从文件目录中写入和读取图片
  5. 布局文件中的笔记
  6. 【Android】配置文件属性说明
  7. 在sd卡存储文件

随机推荐

  1. android 视频图片混合轮播实现
  2. android应用常见错误
  3. 日常记录
  4. 缓存统一管理工具类--android
  5. Android修改默认浏览器为其他浏览器
  6. 判断当前是电脑还是手机打开网页
  7. Android使用adb命令对手机进行截屏保存到
  8. Android APP OPS移除应用程序项目的修改
  9. SharedPreferences存储数据的使用方法(转)
  10. Android垂直跑马灯效果