基于MVVM+Kodein编写的页面模板
前言
在项目中使用框架Arms时候,带有一键生成页面模板,很方面。最近在练习MVVM,于是尝试编写一套页面模板。
概述
IDE 自带很多模板,可以看到内置了很多模板,减少了部分代码的编写,我们可以根据这些模板代码去学习如何定制页面模板
模板结构文件分析
以EmptyActivity进行分析,模板放置路径为:/plugins/android/lib/templates/activities
可以看到每一个模板都包含如图所示的文件
- root 资源文件、模板文件
- src
- app_package
- SimpleActivity.kt.ftl
- app_package
- res
- layout
- src
- globals.xml.ftl 主要用于提供参数
- recipe.xml.ftl 主要用于生成我们实际需要的代码,资源文件等
- template.xml parameter标签,主要用于为图形界面提供参数
- template_balnk_activity.png 缩略图
语法分析
1.template.xml
我们可以看到主要代码如下
<?xml version="1.0"?>
<template
format="5"
revision="5"
name="Empty Activity" 模板名称
minApi="9"
minBuildApi="14"
description="Creates a new empty activity">
<category value="Activity" /> 模板类型
<formfactor value="Mobile" />
<parameter 参数变量
id="activityClass" 变量名, 变量的唯一标识
name="Activity Name" 在创建Activity时展示的变量名
type="string" 类型
constraints="class|unique|nonempty" 变量约束
suggest="${layoutToActivity(layoutName)}" 推荐值,未修改变量时根据其他变量生成
default="MainActivity" 默认值
help="The name of the activity class to create" /> 当编辑一个变量时,显示在下方的提示
<!-- 128x128 thumbnails relative to template.xml -->
<thumbs> 缩略图
<!-- default thumbnail is required -->
<thumb>template_blank_activity.png</thumb>
</thumbs>
<globals file="globals.xml.ftl" />
<execute file="recipe.xml.ftl" />
</template>
2.globals.xml.flt
globals 存储的一些全局变量
<?xml version="1.0"?>
<globals>
<global id="hasNoActionBar" type="boolean" value="false" />
<global id="parentActivityClass" value="" />
<global id="simpleLayoutNa