android studio template模块开发
-
效果
-
前言
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> | if else 语句 |
四、运行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};#if><#else>import com.purewhite.ywc.purewhitelibrary.mvp.presenter.BasePresenter;#if><#if isSwipe>import com.purewhite.ywc.purewhitelibrary.adapter.swipe.SwipLoadListener;#if><#if isRecyclerview>import ${packageName}.mvp.adapter.${adapterName};import androidx.recyclerview.widget.LinearLayoutManager;#if>public class ${activityName} extends BaseMvpActivity<${activityBind},${basePresenter}> ${contractImp} { <#if isRecyclerview> private ${adapterName} adapter; #if> <#if isSwipe> private SwipLoadListener swipLoadListener=new SwipLoadListener() { @Override public void pullDown() { } }; #if> @Override protected int getLayout() { return R.layout.${activityLayout}; } @Override protected void initView() { <#if isSwipe> mDataBinding.swipeLayout.setOnLoadLinstener(swipLoadListener); #if> <#if isRecyclerview> adapter=new ${adapterName}(); mDataBinding.recyclerView.setAdapter(adapter); mDataBinding.recyclerView.setLayoutManager(new LinearLayoutManager(this)); #if> } <#if !isMvp> @Override protected boolean isPresenter() { return false; } #if>}
思路
1.创建文件之后,目标文件不变的方法可以直接书写
2.如果目标文件会发生变化就必须使用变量去替换
如类名(${activityName} )
类名databing地址(${packageName}.databinding.${activityBind})
六、globals文件思路
1.这个共有文件,如果很多资源文件会使用到共同方法,可以把这个方法写再globals文件下
2.如果这个名字或者参数,方法比较长,也可以考虑写再这个文件下
demo地址 https://github.com/YwcSillyWhite/templateMvp
有什么不懂的,或者有好的提议可以添加qq 1075770029,或者加qq群127299409,欢迎大家一起讨论
更多相关文章
- Android Studio 之 AndroidManifest.xml文件中的android:label属
- android 创建文件夹失败
- Android TV蓝牙模块
- Android从文件目录中写入和读取图片
- 布局文件中的笔记
- 【Android】配置文件属性说明
- 在sd卡存储文件