MVP一键生成 Template模板开发与快速开发神器

这边分享一下自己这周的学习成果。早就听说MVP很火,所以就观瞻了一下JessYanCoding大神github,确实很不错····。为什么这么说呢?因为看得我一脸懵逼,可是又不能说出来,所以就只能说一句不错咯。

其实作者的MVP真的很不错,奈何项目过重,就只能自己动手量身定制一发。话说回来如果不想太多了解mvp的只想去体验一把的朋友可以试一试。

学习之前我们先思考一下几个问题。

1.Template模板怎么生成?在哪里生成?

2.Template 用的什么语言?语法怎么学?

3.Template 的目录结构是什么样的?

4.推荐一些比较好的博客

5.推荐一种学习一门新知识的套路

说到这里先秀一波MVP,要不大家以为我是骗浏览量的。

解压后放在AS的templates包下,看图

这里可以下载MVP完整代码http://download.csdn.net/download/qq_20330595/10242200

如果不愿意花积分的可以 去我的 Github https://github.com/goodluckforme/muc_mvp 上面下载 ,目前已经有两个版本了,

第一个版本为基础版本,第二个版本为加入了DataBinding 并且目前最完善的版本。欢迎来Start。

持续更新的哦

//----------------------------------------------说到这里差不多要走一批了,极客朋友们出门左转不送了--------------------------------------------------------------------

入正题

问题一 Template模板怎么生成?在哪里生成?

不建议初学者 上来就自定义模板,可以套用上面activitys下的任意一个模板 如图:

不过我是照着JessYanCoding 修改的。选哪个都无所谓,就看你胃口有多大?


接下来是 Copy一个出来

我们再看看模板的目录结构


问题二:Template 用的什么语言?语法怎么学?

使用的是freemarker 想了解的请移步http://freemarker.foofun.cn/

一句话概括为 类似于HTML的标签语言 主要作用为生成WPS或者MD文档

想学习的可以移步

https://developer.android.com/studio/projects/templates.html

或者

http://blog.csdn.net/u014044812/article/details/51218216(推荐)

简单的了解一下就好,不要深究,学习freeMaker不是我们最终的目的,而只是手段。

我下面会推荐更加高效的学习方法。

问题三:Template 的目录结构是什么样的?

上图给出目录结构,那么我们直接去分析一下以下四个关键性文件

1.template.xml 

下面的8个参数 应该不难看出啥意思吧?

   <parameter
        id="activityClass"  唯一标示,可以用${activityClass}获取value 
        name="Activity Name" 界面输入框前的提示文字 
        type="string" 类型 界面显示为输入框
        constraints="class|unique|nonempty" 约束 class必须是类名 unique唯一 nonempty不能为空  
        suggest="${layoutToActivity(layoutName)}" 建议的名称 默认生成的名称和布局文件名称关联  不太确定 汗
        default="MainActivity" 默认值
        help="The name of the activity class to create" /> 界面提示文字 

2.recipe.xml.ftl

用大白话介绍一下:如果需要生成Activity 再判断如果生成Kotlin代码 找到对应的kt.ftl 生成kt文件 不是就找到.java.ftl生成java文件 接下来打开生成的Activity文件

<#if needActivity>
    <#if generateKotlin>
    <instantiate from="root/src/app_package/MuchActivity.kt.ftl"
                   to="${projectOut}/src/main/java/${slashedPackageName(ativityPackageName)}/${pageName}Activity.kt" />
    <open file="${projectOut}/src/main/java/${slashedPackageName(ativityPackageName)}/${pageName}Activity.kt" />
    <#else>
    <instantiate from="root/src/app_package/MuchActivity.java.ftl"
                   to="${projectOut}/src/main/java/${slashedPackageName(ativityPackageName)}/${pageName}Activity.java" />
    <open file="${projectOut}/src/main/java/${slashedPackageName(ativityPackageName)}/${pageName}Activity.java" />
    </#if>
</#if>

3.globals.xml.ftl

都是全局变量 不怎么关心 

如果project build_gradle有问题

muchAppProjectName 这个值 改成app,即将youxian改成你自己的module名

 <global id="muchAppProjectName" type="string" value="app" />
    <global id="muchAppOut" type="string" value="${escapeXmlAttribute('./' + (muchAppProjectName?default('youxian')))}" />
    <global id="topOut" value="." />

4.MuchActivity.java.ftl

packageName,componentPackageName

这些都是在template.xml 声明过的

import ${packageName}.mvp.ui.base.BaseActivity;
import javax.inject.Inject;
import ${packageName}.mvp.presenter.${pageName}Presenter;//可改成${presenterPackageName}
import ${packageName}.mvp.contract.${pageName}Contract;//可改成${contractPackageName}
import ${componentPackageName}.AppComponent;
import ${componentPackageName}.DaggerActivityComponent;
import ${packageName}.R;
首字母小写 ${extractLetters(pageName[0]?lower_case)}${pageName?substring(1,pageName?length)}Presenter

public @Inject ${pageName}Presenter ${extractLetters(pageName[0]?lower_case)}${pageName?substring(1,pageName?length)}Presenter;

问题四:推荐一些比较好的博客

我只做了些简单的介绍  想深入学习的话 推荐三个博客就够了

http://blog.csdn.net/lmj623565791/article/details/51592043

https://www.jianshu.com/p/607baf7f9899

http://blog.csdn.net/zhaodai11/article/details/51525713

问题五:推荐一种学习一门新知识的套路

学习一门新知识 是新鲜的 可那新鲜劲 就只有2分钟或者是5秒····

其实也不是因为懒,相信学技术的没有不到处挖掘新技术。关注简书,关注CSDN,去腾讯课堂,去GitChat购买文章,每天如此,乐此不疲。那么我们懒么?

想还是菜鸟的时候  我总鄙视一键compile的人,啥都来一波自定义,项目周期紧张,慢慢的我也开始用起框架来了,而现在的我也是乐此不疲的compile。因为这样你就有更多的时间需学习更多的代码,关注更多的博主,经验和见识也会迅速的增长。

以前的技术总监说过 学习的最快途径就是看别人的代码,你可以发现更多高明的写法,甚至会发现你一度困惑的问题的答案。

学习并非从无到有  这样的学习也是枯燥的,很难坚持的。比如我要看完一本java编程思想,为了看书而看书,坚持了一年结果呢?一无所获。

学习应该从有到无再到有。

比如我们学习Dagger2这个新技术

首先我们要查查CSDN 看看Dagger2是什么?看完后看不懂的淘汰一批,剩下看懂了的尝试按照步骤一步步集成。然后集成失败,这里又会淘汰一批,运气好点的集成成功,然后再去查怎么使用,目前Dagger2配合MVP使用后结构复杂,太麻烦还不如自己new一个,这里又会淘汰一批。最后辛辛苦苦搭完框架 Dagger2也注入了,编译也过了。可是一运行打包失败?该google 的google该Baidu的Baidu。这里绝望之余暗骂一声,然后被淘汰。

想必大家都有在不同环节淘汰的经历吧?

Dagger2在15年十月就和Volley,RxJava一起进入我们的视线。但是很荣幸只是看了看果断弃权Dagger2和RxJava,投向Volley的怀抱。

其实学习有三种形态: 自己写   抄写  边抄边写,边写边抄

第一种 不是大神就是二杆子

第二种 是优秀的留级生,压级怪   只会抄写的虽然知其然 而不愿知其所以然。只是一味的横向而不纵向发展之人结局可想而知。

第三种 其实大家都是这样的人 对么? 翻来覆去的抄,抄完怕被老师发现雷同 就稍作修辞。然后抄另外一个人作业的时候发现更简洁,于是抄下来,然后再稍加修改。边抄边写,边写边抄。这样去其糟粕取其精华,慢慢的融入自己的知识体系中。


概括上面的话:我们要先去Github上download一个副本解压  使用库依赖 边改边写。















猜你喜欢

转载自blog.csdn.net/qq_20330595/article/details/79269581