寻龙诀,标准你的代码:AndroidStudio 一键生成MVP模板代码,马兰

频道:小编推荐 日期: 浏览:307

超具体!安卓巴士开发者大会嘉宾及主题介绍


题外话

好久之前就了解过Google的 todo-mvp开发形式,但很长一段时间都不想用于实践项目中。首要原因便是感觉很费事。由于那时我用的开发形式是MVC,我了解的MVC很简略:布局文件表明View、Activity表明Control,然后我只需新建一个类作为Model就能够了,什么脏活累活都放在Model处理,完了之后改写布局。我的意图也很简略:保证我的Activty整齐洁净…可是功用杂乱后会让单薄的Model变青青草在线Vip得杂乱不堪~

比较MVC,以todo-mvp为例你新建一个MVP的Activty你还要建相关的 View、Model、Presenter、Contra寻龙诀,规范你的代码:AndroidStudio 一键生成MVP模板代码,马兰ct等等的类和接口,并且各个类、接口间的承继和完成,目不暇接啊!这真的让刚触摸的人望而止步,新增一个Activity都那么费力了,假如一个项目下来会不会变得很臃肿?并且会额定新增巨大的作业量,种种忧虑让我一向将MVP拒之门外,但随着项目越来越大,功用越来越杂乱 MVC呈现了显着的短板。再讲下去就有点跑题了,关于MVC和MVP的比照能够参阅一下浅谈MVC、MVP。到这或许有孩子想说了:"他人都用MVVM了,你还用MVP,太low了!"。就像找媳妇相同,不是哪个美丽就去娶谁,他人也不必定看得上你,适宜的才是最重要的。

入正题

所以就一向揣摩着能不能在新建一个Activity的一起生成MVP所需求的一切类和接口。网上查找一番,蓝柑是什么发现了Android Studio中自界说模板。由于对todo-mvp不太伤风所以参阅了Android简略有用的MVP结构。

完成了以rxjava全家桶+retrofit+butterknife+eventbus+glide为技能栈的MVP模板。

留意本教程是以CreateN高语芯ewMvpProject为根底。由于在Create New Mvp Project的时分我会把retrofit和rxjava等用到的结构进行依靠,并且会把一切封装的类如:retrofit工厂类、东西类等等常用的类导入进来,要点是把mvp的基类导入了进来供其他自界说模板运用。由于别的两个模板需求用到相关的结构和自界说类,所以必需求先用Create New Mvp Project这个模板创立项目。这样做意图首要是为了让咱们快点看到作用,一起给咱们一点创意,然后创立出归于自己的一套模板,规范自己的代码,进步开发功率,早点下班!

直接上作用图(自己PS功底一般,模板的封面图就先随意放了)

创立MVP项目

新建MVP模板代码

1.新建一个项目

2.挑选模板

3.设置参数

这儿要留意的是你只需求填入 Input Your Name(开发者)和File Head Name(生成一切类的称号),其他的不必管,不要去修正Activity Name和Layout Name! 然后直接finish创立新项目。关于参数后边详解。

4.生成MVP工程

生成MVP工程的一起会把你技能栈所用到的依靠增加进来,也包含常用的东西类、资源文件(自界说布局、动画文件、values下的一切装备文件等等),只需你用到的根本都能增加进来。假如你是一位经一路健康网16jkw常要开发新项意图猿,此刻是不是想喊我baba了。不必一块砖一块砖般过来了,一键新建项目后直接干就完了!如下图便是刚新建了工程的姿态,这是我常用的工程结构。不必像曾经那样新建项目后从其它项目把代码复制粘贴过来了,省心!

5.新建一个新的MVP Activity或许 Fragment

留意!留意!留意!我界说的一切途径都是依据包名下的!!新建时必定要右击包名,然后挑选自界说的模板!这儿不要选Create New Mvp Project模板了这个是新建工程的,选Create New Mvp Activity Or Fragment或许RecyclerView Activity用于生成MVP形式的Activity或Fragment

6.填写新增模块的参数

这儿也仅仅修正Your Name和Component Name就能够了,然后挑选新建Activity仍是Fragment 然后点击finish即可。

7.生成新的MVP模块

下图是新增了一个MVP Activity模板的姿态,是不是轻轻松松就让项目规范了起来?一键生成mvp形式的代码不必做重复无用的作业,只用关怀你的事务。

到这儿作用根本就演示完了,由于新建项目时就依靠了相关的结构和导入了封装好的类,所以能够直接进行网络恳求如图:

自己一起还别的还制作了RecyclerView Activity,信任咱们运用RecyclerView都会觉得有点烦,又要新建一个adapter,又要新建列表里的子布局、数据的实体类。假如是分页列表的更烦,copy一堆接口和完成逻辑,现在能够一键生成是不是很爽?好了,讲那么多开端讲教程了,首要让咱们会自己树立一个契合自己编码习气的模板。我的模板只作抛砖引玉之用。

榜首步找到模板文件夹

在你Android Studio装置目录下找到 \templates\activities这个目录,能够看到这儿面有许多自带的模板。而咱们要做的便是选一个最简略最洁净的模板copy在当时文件夹,重4009515151命名谢洁瑛后进行改造。假如你有其他的模板,直接复制到这个目录下重启IDE即可运用。

第二步复制EmptyActivity模板

    然后按你们的主意把复制的这个模块重命名,接下来就能够进行改造了。先介绍这几个文件:

root:寄存要导入的代码和资源文件。

globals.xml.ftl望文生义是界说大局参数。

recipe.xml.ftl首要担任把root里边的文件导入到项目里。

template.xml首要担任界说新建模板时所需的参数。

template_blank_activity.png是模板的封面图片。

第三步修正模板参数文件template.xml

这儿我觉得最需求留意的当地便是标签里的id参数,其他当地需求用到这个的值只需求写{componentName}即可。并且咱们能够在recipe.xml和代码、资源文件中运用。

第四步树立需求生成的资源文件

这儿我用Create New Mvp Project的root解说:

咱们要导入的类寻龙诀,规范你的代码:AndroidStudio 一键生成MVP模板代码,马兰都放在root/src/app_package下,留意这儿文件都必须以.ftl完毕才干合作脚本指令履行相关的操。这儿我主张事前写好一个能够运转的Android 模板 Demo然后再一个一个修梁梓靖改移植到这个目录。榜首步即将移植的文件加上.ftl,第二部翻开文件修正里边的包名、类名等,否则新建出来的模板会飘红。

如图,咱们需求用freemarker语法界说包名类名,保证生成文件的方位和你界说的是一起的。这儿用到的值都是咱们之前在template.xml中界说的。上面我说过,假如要在工程新建mvp模板的Activity时必需是右击项意图包名新建。看上图榜首行:package ${packageName}.activity意思便是在当时的包名下的activity包内新建一个Activity,所以必定要在该包名上操作,或许自行界说,其他文件的界说也是相同。这儿要说一下的引证templ寻龙诀,规范你的代码:AndroidStudio 一键生成MVP模板代码,马兰ate.xml中的值时或许要进行判别,这时能够用

<#if 条件>

履行A

<#else>

否则履行B

</#if>

举个比方:比方你需求依据新建模板时获取的参数来创立不同的布局能够这样写:

<#if 条件>

setContentView(R.layout.activity_A);

<#else>

setCo鸡鸡头ntentView(R.layout.activity_B);

</#if>

在你的代码文件或许recipe.xml天体浴场博客.ftl中都能够运用。

还有其他许多办法咱们能够去开掘,不才能找到的这方面材料太少。

除了增加代码还能够增加Android刁一妾Manifest.xml,build.gradle还有res下的anim、layout、drawable、values等文件夹所以功用很是强壮。

先说说比较简略的res

像anim、恩啊drawable、layout、values这些资源问件一般直接复制过来就能够运用了,连.ftl后缀都不必增加在rebondikcipe.xml.ftl直接写copy把整个文件夹都复制到项目里就行,可是你假如想要对里边的文件进行操作的话,那个文件就必须加上.flt否则脚本语言无法履行文件而导致报错。

要点要讲下AndroidManifest.xml,build.gradle这两个文件了,也是坑最多的。由于在新建一个项目时,体系的公共模板文件就现已界说好这两个文件了,假如想修正这两个文件现在我想到的有三种办法:
(1)修正公共模板文件,但会影响一切的模板,难度太大危险太高不主张。
(2)直接用自己写的AndroidManifest、build替换体系生成的文件,测验了许屡次都是报错,最抓狂的是他不提示你具体哪里错了,而是谈谈的来一句“兄dai,报错了”。所以无法继续进行。
(3)用merge把内容写入这两个文件。能够成功运转,但有坑。
,AndroidManifest.xml里首要便是想增加权限,可是这儿就呈现了问题。假如有处理的办法的同学请赐教,不才揣摩了好久,由于找不到相关材料就不断的去测验。发现在AndroidManifest.xml中只增加一条权限不时没问题的,可是增加多条权限后生成的代码格局就乱了,还有便是build.gradle里依靠多个库没问题,但要想在android {}增加多行装备就呈现问题了。现在处理的办法仍是一行一行的增加我的追美神器装备。比方我要在android {}里增加

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibil寻龙诀,规范你的代码:AndroidStudio 一键生成MVP模板代码,马兰ity&nb柯恩认罪sp;JavaVersion.VERSION_1_8
}

这儿就要分两次merge进gradle里边 ,如下图

我要树立一个文件a内容是:

android {

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
}

}

文件b内容是:

and寻龙诀,规范你的代码:AndroidStudio 一键生成MVP模板代码,马兰roid {

compileOptions {
    targetCompatibility JavaVersion.VERSION_1_8
  }

}

经过这两个文件我才干把把内容merge进build.gradle里边。当然我最期望是把一切装备和依靠写入build.gradle然后导进去就好了,可是均已失利告终。原因或许许多,一是材料太少无法深入研究,根本都是靠参阅体系自带的模板 进行学习。二是或许这方面的功用不是很安稳,由于我用的是3.1.3版别的AndroidStudio,寻龙诀,规范你的代码:AndroidStudio 一键生成MVP模板代码,马兰把运转完美的模板交给了运用2.1的朋友成果报错了,里边的坑仍是多哈。

上面现已预备好了生成模板的资源,现在就预备把这些资源按咱们界说生成在项目里。这时就要用到recipe.xml这个文件了。

这儿首要是用到了3个标签将咱们界说好的文件生成在项目里

1.merg大唐武侯e兼并,把你的资源文件的内容兼并到方针文件。像AndroidManifest.xml和build.gradle只能用merge,假如想直接替换文件里边有许多问题要处理。玉蛤公共模板文件里边有许多文件彼此调用,并且都是用脚本语言、宏界说写的,水平有限就只能用水平有限的办法处理了。

2.copy复制,望文生义便是把你的资源文件直接复制到对应的途径下了。

3.instantiate  实例,运用后加上个人了解应该是资源文件在对应的途径下生成一个实例。

其间关于途径我都是参阅体系其他模板里边界说的,其间

${escapeXmlAttribute(manifestOut)}表明AndroidMainfest.xml地点目录;

${escapeXmlAttribute(projectOut)}表明项目下的app文件夹途径,和src文件夹同一层级

${escapeXmlAttribute(resOut)}表明资源文件的根目录即res文件夹

${escapeXml吸奶头Attribute(srcOut)}表明表明项目代码文件的根目录

最终open标签建新模板后AndroidStudio翻开方针文件。

我刚开端写recipe.xml的时分在想怎样在工中华之帝国的复苏程里新建一个目录,然后我再把代码文件导入到我新建的目录。后来发现并不需求那么费事

<instantiate from="root/src/app_package/ModelImple.java.ftl"      to="${escapeXmlAttribute(srcOut)}/implement/${componentName}ModelImple.java" />

 to="${escapeXmlAttribute(srcOut)}/implement/${componentName}ModelImple.java"

中,implement代表途径,只需你写上途径就会为你直接生成相应的文件夹。

到这根本就完毕了,这儿是代码地址,只需求把模板文件放在\Android Studio\plugin罗安迪s\android\lib\templates\activitie下即可运用,有问题欢迎指出,也欢迎寻龙诀,规范你的代码:AndroidStudio 一键生成MVP模板代码,马兰转载,请注明出处,谢谢。




咱们都在看


让你明明白白的运用RecyclerView

Gson源码解析和它的规划形式

Flutter开发实战 Redux、主题、国际化

Android & Java面试具体个人总结


欢迎前往安卓巴士博客区投稿,技能成善于共享

等待巴友留言,一起讨论学习