Android Studio自定义模板

template_welcome_activity.png

这里写图片描述

这里的配置和名称都是由template中进行配置的

thumb表示as显示的图片

注意:<parameter

id=“parentActivityClass”

name=“Hierarchical Parent”

type=“string”

constraints=“activity|exists|empty”

default=“”

help=“The hierarchical parent activity, used to provide a default implementation for the ‘Up’ button” />

不能删除,否则as创建时会出错,其他的配置这里已经删除,

如果需要,可以去LoginActivity中copy

id :唯一标识,最终会通过它获取字符串 是否选中等等

name:界面上的左边的提示语

type : 输入值类型 可以是string int boolean 等等

constraints:填写值的约束 如文件名不能重复等等

suggest:建议值,比如填写ActivityName的时候,会给出一个布局文件的建议值。

default:默认值

help:显示的帮助提升语

2、globals.xml.ftl

一般不用动

3、recipe.xml.ftl

<?xml version="1.0"?>

<#if appCompat && !(hasDependency(‘com.android.support:appcompat-v7’))>

</#if>

<merge from=“root/AndroidManifest.xml.ftl”

to=“${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml” />

<merge from=“root/res/values/styles.xml.ftl”

to=“${escapeXmlAttribute(resOut)}/values/styles.xml” />

<instantiate from=“root/res/layout/activity_welcome.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/WelcomeActivity.java.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 ) / {escapeXmlAttribute(srcOut)}/ escapeXmlAttribute(srcOut)/{activityClass}.java” />

copy :从root中copy文件到我们的目标目录,比如我们的模板Activity需要使用一些图标,

那么可能就需要使用copy标签将这些图标拷贝到我们的项目对应文件夹。

merge : 合并的意思,比如将我们使用到的strings.xml合并到我们的项目的stirngs.xml中

instantiate : 和copy类似,但是可以看到上例试将ftl->java文件的,也就是说中间会通过一个步骤,

会生成root下面对应的代码,也就是说你待会root下面的Activity写了什么就会生成什么

open:在代码生成后,打开指定的文件,比如我们新建一个Activity后,

默认就会将该Activity打开。

a、合并AndroidManifest

<merge from=“root/AndroidManifest.xml.ftl”

to=“${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml” />

b、合并styles

<merge from=“root/res/values/styles.xml.ftl”

to=“${escapeXmlAttribute(resOut)}/values/styles.xml” />

c、合并dimens

<merge from=“root/res/values/dimens.xml”

to=“${escapeXmlAttribute(resOut)}/values/dimens.xml” />

d、合并strings

<merge from=“root/res/values/strings.xml.ftl”

to=“${escapeXmlAttribute(resOut)}/values/strings.xml” />

同时这里引入的activity和xml名称都需要和root中的进行对应,

当然合并的内容也需要对应

  • root目录

这里写图片描述

1、在res中

这里写图片描述

a、dimens和strings的写法可以参考LoginActivity

b.styles的写法(styles.xml.ftl)

  • src中是创建的activity(WelcomeActivity.java.ftl)

package ${packageName};

import ${superClassFqcn};

import android.os.Bundle;

import android.os.Handler;

import android.content.Intent;

import android.os.Message;

import android.support.v7.app.AppCompatActivity;

import java.lang.ref.WeakReference;

public class ${activityClass} extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.${layoutName});

//for a moment start new activity

MyHandler myHandler = new MyHandler(this);

myHandler.sendEmptyMessageDelayed(0, 3000);

}

private static class MyHandler extends Handler {

private WeakReference mActivity;

public MyHandler(WelcomeActivity mActivity) {

this.mActivity = new WeakReference(mActivity);

}

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

WelcomeActivity activity = mActivity.get();

if (activity == null || activity.isFinishing()) {

return;

}

switch (msg.what) {

case 0:

Intent intent= new Intent(activity,MainActivity.class);

activity.startActivity(intent);

activity.finish();

break;

}

}

}

}

package ${packageName};// 包名 用 ${ } 引用

import ${superClassFqcn};

import android.os.Bundle;

public class ${activityClass} extends ${superClass} {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 这个我们大概还记得是一个可以勾选的参数 这里就用了if语法

<#if generateLayout>

setContentView(R.layout.${layoutName});

</#if>

}

}

  • AndroidManifest.xml.ftl


《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
Create(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 这个我们大概还记得是一个可以勾选的参数 这里就用了if语法

<#if generateLayout>

setContentView(R.layout.${layoutName});

</#if>

}

}

  • AndroidManifest.xml.ftl

[外链图片转存中…(img-zn9WVPm6-1714554473391)]

[外链图片转存中…(img-k588JjWZ-1714554473393)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 24
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值