郑重声明 未避免大家花费不必要的时间成本。该版本目前只支持AndroidStudio版本3.1.4版本
希望适配更高版本请移步作者 JetPack快速开发模板
如坚持使用新版AS,这里笔者给出一个AndroidStudio版本适配指导;
1.删除databinding 依赖
2.更换jre7 为jdk7
3.project build.gradle 配置kotlin版本1.2.50,gradle版本3.1.4
4.修改gradle构建版本 4.4-all
这样就可以在高版本的AndroidStudio上玩耍了
这边分享一下自己这周的学习成果。早就听说MVP很火,所以就观瞻了一下JessYanCoding大神github,确实很不错····。为什么这么说呢?因为看得我一脸懵逼,可是又不能说出来,所以就只能说一句不错咯。
其实作者的MVP真的很不错,奈何项目过重,就只能自己动手量身定制一发。话说回来如果不想太多了解mvp的只想去体验一把的朋友可以试一试。
学习之前我们先思考一下几个问题。
1.Template模板怎么生成?在哪里生成?
2.Template 用的什么语言?语法怎么学?
3.Template 的目录结构是什么样的?
4.推荐一些比较好的博客
5.推荐一种学习一门新知识的套路
说到这里先秀一波MVP,要不大家以为我是骗浏览量的。
解压后放在AS的templates包下,看图
这里可以下载MVP完整代码http://download.csdn/download/qq_20330595/10242200
如果不愿意花积分的可以 去我的 Github https://github/goodluckforme/muc_mvp 上面下载 ,目前已经有两个版本了,
第一个版本为基础版本,第二个版本为加入了DataBinding 并且目前最完善的版本。欢迎来Start。
持续更新的哦
//----------------------------------------------说到这里差不多要走一批了,极客朋友们出门左转不送了--------------------------------------------------------------------
入正题
问题一 Template模板怎么生成?在哪里生成?
不建议初学者 上来就自定义模板,可以套用上面activitys下的任意一个模板 如图:
不过我是照着JessYanCoding 修改的。选哪个都无所谓,就看你胃口有多大?
接下来是 Copy一个出来
我们再看看模板的目录结构
问题二:Template 用的什么语言?语法怎么学?
使用的是freemarker 想了解的请移步http://freemarker.foofun/
一句话概括为 类似于HTML的标签语言 主要作用为生成WPS或者MD文档
想学习的可以移步
https://developer.android/studio/projects/templates.html
或者
http://blog.csdn/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;
问题四:推荐一些比较好的博客
我只做了些简单的介绍 想深入学习的话 推荐三个博客就够了
https://neyoufan.github.io/2016/11/25/android/%E7%BD%91%E6%98%93%20Android%20%E5%B7%A5%E7%A8%8B%E6%A8%A1%E6%9D%BF%E5%8C%96%E5%AE%9E%E8%B7%B5/#2-2-globals-xml-ftl(推荐)
http://blog.csdn/lmj623565791/article/details/51592043
https://www.jianshu/p/607baf7f9899
http://blog.csdn/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一个副本解压 使用库依赖 边改边写。
更多推荐
MVP一键生成 Template模板开发与快速开发神器
发布评论