</androidx.constraintlayout.widget.ConstraintLayout>
TanJiaJunActivityForDagger2.kt.ftl
package?
k
o
t
l
i
n
E
s
c
a
p
e
d
P
a
c
k
a
g
e
N
a
m
e
.
u
i
.
{kotlinEscapedPackageName}.ui.
kotlinEscapedPackageName.ui.{businessName}.activity
import?android.os.Bundle
import?androidx.activity.viewModels
import?${applicationPackage}.R
import?
a
p
p
l
i
c
a
t
i
o
n
P
a
c
k
a
g
e
.
d
a
t
a
b
i
n
d
i
n
g
.
A
c
t
i
v
i
t
y
{applicationPackage}.databinding.Activity
applicationPackage.databinding.Activity{objectKind}Binding
import?com.tanjiajun.androidgenericframework.ui.BaseActivity
import?
k
o
t
l
i
n
E
s
c
a
p
e
d
P
a
c
k
a
g
e
N
a
m
e
.
u
i
.
{kotlinEscapedPackageName}.ui.
kotlinEscapedPackageName.ui.{businessName}.viewmodel.${viewModelName}
class?
a
c
t
i
v
i
t
y
N
a
m
e
?
:
?
B
a
s
e
A
c
t
i
v
i
t
y
<
A
c
t
i
v
i
t
y
{activityName}?:?BaseActivity<Activity
activityName?:?BaseActivity<Activity{objectKind}Binding,?${viewModelName}>()?{
override?val?layoutRes:?Int?=?R.layout.${layoutName}
override?val?viewModel?by?viewModels<${viewModelName}>?{?viewModelFactory?}
override?fun?onCreate(savedInstanceState:?Bundle?)?{
super.onCreate(savedInstanceState)
}
}
TanJiaJunViewModelForDagger2.kt.ftl
package?
k
o
t
l
i
n
E
s
c
a
p
e
d
P
a
c
k
a
g
e
N
a
m
e
.
u
i
.
{kotlinEscapedPackageName}.ui.
kotlinEscapedPackageName.ui.{businessName}.viewmodel
import?com.tanjiajun.androidgenericframework.ui.BaseViewModel
import?javax.inject.Inject
class?${viewModelName}?@Inject?constructor()?:?BaseViewModel()?{
}
template_blank_activity.png
展示模板界面的缩略图,如下图所示:
template.xml
用于定义创建面板的控件,代码如下所示:
<template
format=“8”
revision=“8”
name=“TanJiaJun?Activity?For?Dagger2”
minApi=“9”
minBuildApi=“26”
description=“Creates?a?new?activity?of?Android?Generic?Framework?For?Dagger2.”>
<parameter
id=“packageName”
name=“Package?Name”
type=“string”
constraints=“package”
default=“com.tanjiajun.androidgenericframework”?/>
<parameter
id=“businessName”
name=“Business?Name”
type=“string”
constraints=“nonempty”
default=“main”?/>
<parameter
id=“objectKind”
name=“Object?Kind”
type=“string”
constraints=“nonempty”
default=“TanJiaJun”?/>
<parameter
id=“activityName”
name=“Activity?Name”
type=“string”
constraints=“class|unique|nonempty”
suggest="${extractLetters(objectKind)}Activity"
default=“TanJiaJunActivity”
help=“The?name?of?the?activity?class?to?create.”?/>
<parameter
id=“layoutName”
name=“Layout?Name”
type=“string”
constraints=“layout|unique|nonempty”
suggest="${activityToLayout(activityName)}"
default=“activity_tan_jia_jun”
help=“The?name?of?the?layout?to?create?for?the?activity.”?/>
<parameter
id=“viewModelName”
name=“ViewModel?Name”
type=“string”
constraints=“class|unique|nonempty”
suggest="${extractLetters(objectKind)}ViewModel"
default=“TanJiaJunViewModel”
help=“The?name?of?the?viewModel?class?to?create.”?/>
template_blank_activity.png
<
-
packageName:包名,默认值是com.tanjiajun.androidgenericframework。 -
businessName:业务名称,默认值是main。 -
objectKind:对象类型,默认值是TanJiaJun。 -
activityName:Activity名称,默认值是TanJiaJunActivity。 -
layoutName:布局名称,默认值是activity_tan_jia_jun。 -
viewModelName:ViewModel名称,默认值是TanJiaJunViewModel。
每一个parameter对应创建面板的一个控件,控件的id可以得到用户输入的值,用于渲染ftl文件。下面以TanJiaJunAcitivityForDagger2为例生成相应的代码。/? ?生成代码? ?/activity_tan_jia_jun.xml,代码如下所示:
<layout?xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”>
<variable
name=“viewModel”
type=“com.tanjiajun.androidgenericframework.ui.ui.main.viewmodel.TanJiaJunViewModel”?/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:background="@color/background_color">
</androidx.constraintlayout.widget.ConstraintLayout>
TanJiaJunActivity.kt,代码如下所示:
package?com.tanjiajun.androidgenericframework.ui.ui.main.activity
import?android.os.Bundle
import?androidx.activity.viewModels
import?com.tanjiajun.androidgenericframework.R
import?com.tanjiajun.androidgenericframework.databinding.ActivityTanJiaJunBinding
import?com.tanjiajun.androidgenericframework.ui.BaseActivity
import?com.tanjiajun.androidgenericframework.ui.ui.main.viewmodel.TanJiaJunViewModel
class?TanJiaJunActivity?:?BaseActivity<ActivityTanJiaJunBinding,?TanJiaJunViewModel>()?{
override?val?layoutRes:?Int?=?R.layout.activity_tan_jia_jun
override?val?viewModel?by?viewModels?{?viewModelFactory?}
override?fun?onCreate(savedInstanceState:?Bundle?)?{
super.onCreate(savedInstanceState)
}
}
TanJiaJunViewModel.kt:代码如下所示:
学习分享
在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。
2021最新上万页的大厂面试真题
七大模块学习资料:如NDK模块开发、Android框架体系架构…
2021大厂面试真题:
只有系统,有方向的学习,才能在短时间内迅速提高自己的技术,只有不断地学习,不懈的努力才能拥有更好的技术,才能在互联网行业中立于不败之地。
你愿不愿意找或是找的方法对不对了
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。
2021最新上万页的大厂面试真题
[外链图片转存中…(img-CQkTwlT3-1643878720635)]
七大模块学习资料:如NDK模块开发、Android框架体系架构…
[外链图片转存中…(img-r1HLHMGT-1643878720636)]
2021大厂面试真题:
[外链图片转存中…(img-H2a0pOKY-1643878720636)]
只有系统,有方向的学习,才能在短时间内迅速提高自己的技术,只有不断地学习,不懈的努力才能拥有更好的技术,才能在互联网行业中立于不败之地。
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录
|