效果
前言
Android很多项目的时候,很多页面的写法大致都差不多,为了提高速度,为什么我们不打造属于自己的模块化
简易创建一个模块
在plugins搜索加入TemplateBuider
重启Android studio,指定一个文件。按下alt+T(option+t),打开templateBuider
应用程序 ▸ Android Studio ▸ Contents ▸ plugins ▸ android ▸ lib ▸ templates ▸ yuwenchao找到demo文件(window类似)
把文件夹复制出来,用studio运行。
文件和相关语法讲解
通用语法
${frameName} | id为frameName的值(name) |
${activityToLayout(activityName)} | activity转layout |
${layoutToActivity(layoutName)} | layout转activity |
${classToResource(frameName)} | 类转换资源文件昵称 |
ui布局语法讲解(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语法
${frameName} | id为frameName的值(name) |
<#if relativepackagehas_content=""> ${relativePackage} <#else> ${packageName} | if else 语句 |
四、运行recipe语法
<instantiate 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
相关推荐
0评论