AS自定义模板,效率提升的不是一星半点,2024年最新在线面试平台

  • TanJiaJunActivityForDagger2:用于生成Dagger2版本的Activity对应的xml、Activity和ViewModel。

  • TanJiaJunFragmentForDagger2:用于生成Dagger2版本的Fragment对应的xml、Fragment和ViewModel。

  • TanJiaJunActivityForKoin:用于生成Koin版本的Activity对应的xml、Activity和ViewModel。

  • TanJiaJunFragmentForKoin:用于生成Koin版本的Fragment对应的xml、Fragment和ViewModel。

然后把TanJiaJunActivityForDagger2和TanJiaJunActivityForKoin放到Activity模板目录下,把TanJiaJunActivityForKoin和TanJiaJunFragmentForKoin放到Fragment模板目录下。Activity模板目录地址:/Applications/Android Studio.app/Contents/plugins/android/lib/templates/activities,如下图所示:

Fragment模板目录地址:/Applications/Android Studio.app/Contents/plugins/android/lib/templates/fragments,如下图所示:

最后重启Android Studio,然后就可以使用这些模板了,如下图所示:Activity

Fragment

创建面板界面如下图所示:

下面用TanJiaJunActivityForDagger2来描述目录结构。

目录结构


目录结构如下图所示:

globals.xml.ftl


用于定义全局变量,代码如下所示:

<#include “…/common/common_globals.xml.ftl” />

recipe.xml.ftl


该文件可以定义如下常用的标签:

  • copy:复制文件到目标目录,可以用于将图标复制到项目的文件夹。

  • merge:合并,可以用于将文件和项目中现有的文件合并。

  • instantiate:通过FreeMarker将ftl文件中的变量都转换成对应的值,并且生成我们想要的文件。

  • open:在代码生成后,打开指定的文件。

FreeMarker是一个模板引擎,它可以用来生成输出文本(例如:HTML网页、电子邮件、配置文件、源代码等)的通用工具,如下图所示:

FreeMarker的工作原理,如下图所示:

代码如下所示:

<@kt.addAllKotlinDependencies />

<instantiate

from=“root/res/layout/activity_tan_jia_jun_for_dagger2.xml.ftl”

to=“ e s c a p e X m l A t t r i b u t e ( r e s O u t ) / l a y o u t / {escapeXmlAttribute(resOut)}/layout/ escapeXmlAttribute(resOut)/layout/{layoutName}.xml” />

<instantiate

from=“root/src/app_package/TanJiaJunActivityForDagger2.kt.ftl”

to=“ e s c a p e X m l A t t r i b u t e ( s r c O u t ) / u i / {escapeXmlAttribute(srcOut)}/ui/ escapeXmlAttribute(srcOut)/ui/{businessName}/activity/${activityName}.kt” />

<instantiate

from=“root/src/app_package/TanJiaJunViewModelForDagger2.kt.ftl”

to=“ e s c a p e X m l A t t r i b u t e ( s r c O u t ) / u i / {escapeXmlAttribute(srcOut)}/ui/ escapeXmlAttribute(srcOut)/ui/{businessName}/viewmodel/${viewModelName}.kt” />

我解释下代码的逻辑:在指定的目录下,用activity_tan_jia_jun_for_dagger2.xml.ftl文件生成 l a y o u t N a m e . x m l 文 件 , 用 T a n J i a J u n A c t i v i t y F o r D a g g e r 2. k t . f t l 文 件 生 成 {layoutName}.xml文件,用TanJiaJunActivityForDagger2.kt.ftl文件生成 layoutName.xml文件,用TanJiaJunActivityForDagger2.kt.ftl文件生成{activityName}.kt文件,用TanJiaJunViewModelForDagger2.kt.ftl文件生成 v i e w M o d e l N a m e . k t 文 件 , 最 后 打 开 {viewModelName}.kt文件,最后打开 viewModelName.kt文件,最后打开{activityName}.kt文件。

root


存放ftl文件,也就是模板代码,代码如下所示:activity_tan_jia_jun_for_dagger2.xml.ftl

<layout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:app=“http://schemas.android.com/apk/res-auto”>

<variable

name=“viewModel”

type=“ 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}” />

<androidx.constraintlayout.widget.ConstraintLayout

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:background=“@color/background_color”>

</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

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

总结

算法知识点繁多,企业考察的题目千变万化,面对越来越近的“金九银十”,我给大家准备好了一套比较完善的学习方法,希望能帮助大家在有限的时间里尽可能系统快速的恶补算法,通过高效的学习来提高大家面试中算法模块的通过率。

这一套学习资料既有文字档也有视频,里面不仅仅有关键知识点的整理,还有案例的算法相关部分的讲解,可以帮助大家更好更全面的进行学习,二者搭配起来学习效果会更好。

部分资料展示:




有了这套学习资料,坚持刷题一周,你就会发现自己的算法知识体系有明显的完善,离大厂Offer的距离更加近。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
解,可以帮助大家更好更全面的进行学习,二者搭配起来学习效果会更好。

部分资料展示:

[外链图片转存中…(img-u19XO5gz-1712782196915)]
[外链图片转存中…(img-uvHAUrji-1712782196915)]
[外链图片转存中…(img-kC6XuHxc-1712782196915)]
[外链图片转存中…(img-rEr765pR-1712782196915)]

有了这套学习资料,坚持刷题一周,你就会发现自己的算法知识体系有明显的完善,离大厂Offer的距离更加近。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-OsxtYxa3-1712782196916)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值