Activity模板文件的创建与使用

二话不说,上图:


看出端倪没有?是不是多了几个你不认识的界面?

一、Activity模板

今天做的就是像这种,可以快速创建自己想要的Activity模板。开发过程中,创建Activity时,我通常都会选择一个Empty Activity,然后再自己写界面,相信大部分菜鸟(没错,说的就是我)都是这么做的吧。但是,如果以后每次自己撸代码的时候,又想要创建Activity,这个Activity又是一个自己以前做过的差不多的,为了省时省力,是再回去找自己以前写过代码进行复制,还是自己重头再写一次呢?相信这两种方式都有些麻烦吧。那么,是不是可以把我们觉得会经常创建Activity做成一个模板,以后想要的时候,直接new-->activity-->自己的模板Activity就行了呢,比如:


你可以打开自己的android studio查看一下,是否有上面这些红色箭头指向的Activity,不出意外,你是找不到的。这个就是要说的Activity模板。

二、模板Activity的创建

首先,是把自己想做成模板的Activity 先创建出来。

做一个带有RecyclerView的Activity,只是作为例子展示,所以不做很复杂的界面。

三、创建自己的模板文件

打开android studio的安装目录,按顺序打开plugins --> android --> lib --> templates --> activities ,这里存放的就是所有activity模板。

要创建自己的模板文件,先复制一份已有的模板文件夹,这里复制FullscreenActivity文件夹,里面的结构为:


这里就不对上面这些文件进行解释了,因为文件代表什么意思,其实我也不知道,但是我们只要知道里面有什么,作用是什么就行了。下面我会把编辑好的各个文件的内容贴出来,里面都有注释的。

自己做的模板文件目录:

root文件夹

res/layout文件夹

src/app_package文件夹

globals.xml.ftl文件内容:

<?xml version="1.0"?>
<globals>
    <global id="hasNoActionBar" type="boolean" value="false" />
    <global id="parentActivityClass" value="" />
    <global id="excludeMenu" type="boolean" value="true" />
    <global id="generateActivityTitle" type="boolean" value="false" />
    <#include "../common/common_globals.xml.ftl" />
</globals>

这里的globals文件里面从FullscreenActivity复制过来的时候只有最后一个,但是经过测试,只有最后一个是不能用的,还得加上其他的,所以上面这些内容就是全部的,如果有人知道为什么只有最后一个不行的原因,希望能告诉一下哈。


recipe.xml.ftl文件内容:

<?xml version="1.0"?>
<recipe>
    <#include "../common/recipe_manifest.xml.ftl" />

	<#if !appCompat && !(hasDependency('com.android.support:support-v4'))>
	        <dependency mavenUrl="com.android.support:support-v4:${buildApi}.+"/>
	    </#if>

	<#if appCompat && !(hasDependency('com.android.support:appcompat-v7'))>
	       <dependency mavenUrl="com.android.support:appcompat-v7:${buildApi}.+" />
	</#if>
	<!-- 判断是否在gradle已经依赖了这个库,没有则进行依赖 -->
	<#if !(hasDependency('com.android.support:recyclerview-v7'))>
			<dependency mavenUrl="com.android.support:recyclerview-v7:${buildApi}.+" />
	</#if>
			
	<#if (buildApi gte 22) && appCompat && !(hasDependency('com.android.support:design'))>
	    <dependency mavenUrl="com.android.support:design:${buildApi}.+" />
	</#if>
	<!-- 创建RecyclerViewActivity -->
	<instantiate from="root/src/app_package/RecyclerViewActivity.java.ftl"
     	to="${escapeXmlAttribute(srcOut)}/${activityClass}.java" />  

	<!-- 创建activity_recycler_view.xml 布局文件  这里的${activityLayoutName}其实就是template.xml中默认的layout名字-->
	<instantiate from="root/res/layout/activity_recycler_view.xml.ftl"
		to="${escapeXmlAttribute(resOut)}/layout/${activityLayoutName}.xml" />
	<!--创建item_text.xml布局-->
	<instantiate from="root/res/layout/item_text.xml.ftl"
		to="${escapeXmlAttribute(resOut)}/layout/item_text.xml" />

	<!--打开文件,就是创建完是否打开-->
	<open file="${escapeXmlAttribute(resOut)}/layout/${activityLayoutName}.xml"/>        
 	<open file="${escapeXmlAttribute(srcOut)}/${activityClass}.java" />

	<!--创建一些资源文件,如果有创建其他像drawable下的文件,可以在这里创建,创建语法如下,我们这里没有其他文件,所以注释掉了,但是避免你做模板的时候需要创建这些文件,所以贴出来,方便你查看创建的方法-->
	<!--
	     <merge from="root/res/drawable/ic_comment.xml"
			to="${escapeXmlAttribute(resOut)}/drawable/ic_comment.xml" />
			-->
</recipe>
template.xml文件内容:

<?xml version="1.0"?>
<template
    format="5"
    revision="7"
    name="RecyclerViewActivity"
    minApi="7"
    minBuildApi="14"
    description="创建一个带有RecyclerView的页面">
<!--上面的name="RecyclerViewActivity" 一定要写一个自己定好的名字-->
    <category value="Activity" />
    <formfactor value="Mobile" />
<!--创建页面的Activity的默认名字-->
    <parameter
        id="activityClass"
        name="Activity Name"
        type="string"
        constraints="class|unique|nonempty"
        default="RecyclerViewActivity"
        help="Activity的名字" />
<!--创建页面的Layout的默认名字-->
    <parameter
        id="activityLayoutName"
        name="Layout Name"
        type="string"
        constraints="layout|unique|nonempty"
        default="activity_recycler_view"
        help="创建的Activity对应的layout的名字" />


    <parameter
        id="isLauncher"
        name="Launcher Activity"
        type="boolean"
        default="false"
        help="如果选中,则该Activity会创建为APP的主入口" />
    
    <parameter
        id="packageName"
        name="Package name"
        type="string"
        constraints="package"
        default="com.mycompany.myapp" />

    <!-- 128x128 thumbnails relative to template.xml -->
    <thumbs>
        <!-- default thumbnail is required -->
		<!--创建时显示的界面图片-->
        <thumb>my_template.png</thumb>
    </thumbs>

    <globals file="globals.xml.ftl" />
    <execute file="recipe.xml.ftl" />

</template>
my_template.png  是这个activity的显示效果图。这种图片最终显示效果可能不好看,因为其他模板都是用512 x 512 的,我没有修改图片大小。你做的时候可以自己修改大小,那样会比较好看。

activity_recycler_view.xml.ftl文件内容

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/id_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>

</RelativeLayout>
item_text.xml.ftl文件内容

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/id_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:background="#ccc"
    android:padding="5dp">
</TextView>
RecyclerViewActivity.java.ftl文件内容:

package ${packageName};//这里代表你创建Activity的项目包名,一定记得要换成这个,不然创建后就不是你原本的包名了。

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class RecyclerViewActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private List<String> data =new ArrayList<>();
    private MyAdapter mAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recycler_view);
        initData();
        mRecyclerView = (RecyclerView) findViewById(R.id.id_recycler_view);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
        mAdapter = new MyAdapter(this);
        mRecyclerView.setAdapter(mAdapter);
    }

    private void initData() {
        data.add("adadadaadadad");
        data.add("addjjjad");
        data.add("adadadjf");
        data.add("ajtyujhd");
        data.add("ytsdgsd");
        data.add("qvsbdh");
        data.add("fgjfmf");
        data.add("gyuluy");
        data.add(".kj.jk.j.jl.j.j.y");
        data.add("ukyktkt");
        data.add("tkjryjgj");
        data.add("rykrykry");
        data.add("yrjkry");
        data.add("ryjrjr");

    }

    class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{
        private Context mContext;
        public MyAdapter(Context context) {
            mContext = context;
        }

        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(mContext).
                    inflate(R.layout.item_text, parent, false);
            return new MyViewHolder(view);
        }

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
            holder.mTextView.setText(data.get(position));
        }

        @Override
        public int getItemCount() {
            return data.size();
        }
    }

        class MyViewHolder extends RecyclerView.ViewHolder{
            private TextView mTextView;
            public MyViewHolder(View itemView) {
                super(itemView);
                mTextView = (TextView) itemView.findViewById(R.id.id_text);

        }
    }
}
上面就是做这个模板文件的全部内容部分。

 最后,完成后的效果展示图:




点击Finish就可以完成模板Activity的创建了。

这个只是一个很简单的模板文件的创建过程,你也可以根据这样的方式,创建一个属于你自己的模板。


注:将模板文件放在activities后,需要重启android studio才有效。写这些文件的时候,千万记得不要写错类名,布局名,后缀等。不然查找起来会非常麻烦,我在查找这种错误时也是花了很多时间的,所以,千万注意啊。

本次的模板文件下载地址:http://download.csdn.net/detail/xqx5140/9713528

本博文有参考鸿洋大神的一篇博文:http://blog.csdn.net/lmj623565791/article/details/51635533


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值