最全详解!AndroidStudioactivitytemplate(模板)教程
概述
Android Studio的activity⼜叫Android ADT Template,就是当你创建⼀个新的activity时在activity gallery看到的那些已经建构好的模板:
你有没有想过⾃⼰写⼀个Activity模板,然后以后要创建相同类型的Activity时少写⼤量重复的代码呢?这篇⽂章就是为你打开新世界的⼤门。
当看到⽹上只介绍⼀个⼤概然后丢个链接让你⾃⼰去摸索的教程就想⾃⼰写⼀个完整的教程。这个系列教程将通过DIY⼀个模板的过程,穿插各种函数、数据类型等语法来讲解。
开始
emmmm,制作模板既没有IDE也没有代码提⽰,因此我们最好到⼀个现成的样本来改。Android Studio的Activity模板的地址在{Android Studio}安装地址\plugins\android\lib\templates\activities下,如图
我们可以看到AS内置的模板都在这⾥了,我们先copy其中的⼀份出来,我选择了BasicActivity毕竟这个⾥⾯的内容⽐较全。然后我们就可以开始啦。
先看看⽂件结构:
l.ftl
template_basic_activity.png //缩略图,即在activity gallery看到的那些
template_basic_activity_fragment.png
root //资源根⽬录, 以下⽂件结构同项⽬的结构
res
layout
activity_l.ftl
l.ftl
src
app_package
SimpleActivity.java.ftl
SimpleActivity.kt.ftl
SimpleActivityFragment.java.ftl
SimpleActivityFragment.kt.ftl
制作⼀个RecyclerView Template
讲理论和读⽂档还不如直接动⼿做,所以这⾥我⽤RecyclerView的例⼦来实现整个流程顺带穿插各种详细的API。在制作之前我们需要复制⼀个现成的模板出来(如Drawer Activity)。然后把⽂件夹名改成RecyclerView Activity。然后创建⼀个Android Studio项⽬,把我们需要⽤模板⽣成的⽂件先写出来。
要做⼀个RecyclerView需要:
+ ⼀个或两个Activity布局
+ 列表item的布局
+ Activity,
+ Adapter适配器
不会RecyclerView的话可以看这篇⽂章->
我是⽤Kotlin写的⽰范(看不懂没关系,知道⼤概要做什么就可以了):
放⼀张Activity截图:
再放⼀张Adapter的截图:
Layout的话就⾃由发挥吧,你经常写什么样的列表就写什么Layout。
等等。。。楼主你站住,错误那么多是怎么回事,给RecyclerView三个layoutManager⼜是什么⿁还有这变量命名你。。。怕不是个假的Android程序员??
android简单教程
咳咳。。。那、那个请不要在意那么多细节,毕竟RecyclerView的玩法太多了我们没法兼顾所有情况只能写⼀些通⽤的代码,再根据实际来进⾏修改。这只是个简单的⽰例,你也可以加上RecyclerView的点击回调代码等。
然后把这些⽂件复制到模板⽂件夹⾥相应的位置,⽐如ListActivity就放在root\src\app_package下。然后给这些⽂件都加上后缀
名”.ftl”。(注意是加上后缀名⽽不是改后缀名)。
改完后的三个Layout⽂件:
由于没什么需要改的(除了layout⾥有context属性如下图需要修改), 因此模板预置的⽂件没什么参考意义可以直接删了。
回到res⽬录下,把⽤不到的⽂件夹删了,如果你有字符,颜⾊等资源的话把l或l之类的⽂件复制到相应⽂件夹下,加上后缀名.ftl就可以了。后⾯我们会⽤代码合并这些资源。
由于涉及到⼀些参数,所以先不急着修改类的内容,先看到主页三个⽂件:
globals,recipe,template。
Globals
globals好像⽤不到,直接把变量都删了吧~【喂楼主你这样太不负责了】好吧我还是说⼀下这个⽂件。
除了l,其他需要被Android Studio处理(其实底层是FreeMaker⼯作这个后⾯再说)的⽂件都需要加上后缀名.ftl( 全名FreeMarker Template Language),因此globals和recipe也不例外(因此图⽚和⼀些不需要变量替换和合并处理的资源⽂件就可以不⽤加啦)。
FTL语⾔由以下四种东西组成:
- Text : 直接输出的⽂本
- Interpolation(插值):以“${ var }”格式将变量插⼊字符串
- FTL tags (标签/指令):类似html的标签
- Comments (注释):<#– 这是⼀条注释 –>
在globals⾥的<#if><#else>就是指令:
<#if 表达式><#else>这个就不⽤说了吧,表达式成⽴执⾏<#if>标签下的指令。
⽽global就是⽤⼀个个键值对存放全局变量,这些变量⼀般是不作为在创建Activity时可以修改的参数的(所以应该叫全局常量?)。它们主要以${ 常量 }形式出现在其他ftl⽂件中。
全局变量type的类型有string,boolean,integer。使⽤String类型时type可省略。
在l.ftl中,你也可以使⽤<#include “../common/l.ftl” />指令来导⼊其他变量。<#assign themeName=theme.name!’AppTheme’>命令⽤于赋值。
⾸先看到根元素:
<template
format="5"
revision="1"
name="RecyclerView Activity"
minApi="9"
minBuildApi="14"
description="Creates a new Activity with a RecyclerView.">
其中:
format: 固定值,⽆视
revision: 版本,数值
name: Template的名字
minApi:对应minSdkVersion
minBuildApi:对应Api Level
description: 介绍
template下有这么⼏种节点:
-
category 模板类型
- dependency 依赖的库
- formfactor 不修改
- parameter 参数
- thumbs 预览图
- globals 不修改
- execute 不修改
我还是先将这些节点梳理⼀遍吧:
category
有以下三种:
1. Applications
2. Activities
3. UI Components
dependency
形式如下:
<dependency name="android-support-v4"revision="8" />
name为依赖库的名称
revision为库的最低版次
thumb
预览图
当需要根据变量使⽤不同的预览图时,使⽤以下⽅式:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论