概要:看了一个这样的教程,记录学习一下。如果有人看到这个博客希望对大家有所帮助

具体的效果图:

android 创建activity模板,加快开发进度

android 创建activity模板,加快开发进度

分析:从上图中可以看到,我新建一个项目的时候以及新建一个activity的时候会显示一个新安装的androidstudio没有的activity模板,这个模板可以加入自己平时开发中所需的但是赖得写的,在新建activity的时候会自动生成的代码。

我这里写一个简单的欢迎页,每个app都有欢迎页并且写的套路都一样。

第一步:

我们去找到目录C:\Program Files\Android\Android Studio\plugins\android\lib\templates\activities  如图:

android 创建activity模板,加快开发进度

  这个图上面的都是androidstudio原来就有的activity,我们可以copy一份LoginActivity,然后在此基础上改

目录结构如下:

android 创建activity模板,加快开发进度


第二步:

这个图上面的都是androidstudio原来就有的activity,我们可以copy一份,然后在此基础上改

①先修改template.xml,这个文件是新建activity的时候的选择页面

<?xml version="1.0"?>
<template
    format="5"
    revision="6"
    name="
Welcome Activity"
    description="Creates a new welcome activity"
    minApi="8"
    minBuildApi="14">
    <dependency name="android-support-v4" revision="8" />
    <category value="Activity" />
    <formfactor value="Mobile" />


    <parameter
        id="instantAppActivityHost"
        name="Instant App URL Host"
        type="string"
        suggest="${companyDomain}"
        default="instantapp.example.com"
        visibility="isInstantApp!false"
        help="The domain to use in the Instant App route for this activity"/>


    <parameter
        id="instantAppActivityRouteType"
        name="Instant App URL Route Type"
        type="enum"
        default="pathPattern"
        visibility="isInstantApp!false"
        help="The type of route to use in the Instant App route for this activity" >
        <option id="path">Path</option>
        <option id="pathPrefix">Path Prefix</option>
        <option id="pathPattern">Path Pattern</option>
    </parameter>


    <parameter
        id="instantAppActivityRoute"
        name="Instant App URL Route"
        type="string"
        default="/.*"
        visibility="isInstantApp!false"
        help="The route to use in the Instant App route for this activity"/>

//要创建的Activity的名称,选择框的时候可以修改
    <parameter
        id="activityClass"
        name="Activity Name"
        type="string"
        constraints="class|unique|nonempty"
        default="WelcomeActivity"

        help="The name of the activity class to create" />

//创建的时候判断你是否勾选generateLayout的选项

<parameter
        id="generateLayout"
        name="Generate Layout File"
        type="boolean"
        default="true"
        help="If true, a layout file will be generated" />

//要创建的布局文件的名称,选择框的时候可以修改
    <parameter
        id="layoutName"
        name="Layout Name"
        type="string"
        constraints="layout|unique|nonempty"
        suggest="${activityToLayout(activityClass)}"
        default="activity_welcome"
        help="The name of the layout to create for the activity" />
   <parameter
        id="activityTitle"
        name="Title"
        type="string"
        constraints="nonempty"
        default="Sign in"
        help="The name of the activity." />
    <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" />

//要创建的包的名称,选择框的时候可以修改
    <parameter
        id="packageName"
        name="Package name"
        type="string"
        constraints="package"
        default="com.mycompany.myapp" />
    <thumbs>
        <thumb>template_login_activity.png</thumb>
    </thumbs>
    <globals file="globals.xml.ftl" />
    <execute file="recipe.xml.ftl" />
</template>

②再修改recipe.xml.ftl,这个文件是引入activity文件,布局文件以及注册文件的关键,不能改错。而引入的文件接下来也要修改

<?xml version="1.0"?>
<#import "root://activities/common/kotlin_macros.ftl" as kt>
<recipe>
   <#if appCompat && !(hasDependency('com.android.support:appcompat-v7'))>
       <dependency mavenUrl="com.android.support:appcompat-v7:${buildApi}.+" />
    </#if>


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


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


    <#include "../common/recipe_theme.xml.ftl" />


    <merge from="root/AndroidManifest.xml.ftl"
             to="${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml" />

    <instantiate from="root/res/layout/activity_welcome.xml.ftl"
                   to="${escapeXmlAttribute(resOut)}/layout/${layoutName}.xml" />
<#if generateKotlin>
    <@kt.addAllKotlinDependencies />
    <instantiate from="root/src/app_package/WelcomeActivity.kt.ftl"
                   to="${escapeXmlAttribute(srcOut)}/${activityClass}.kt" />
    <open file="${escapeXmlAttribute(srcOut)}/${activityClass}.kt" />
<#else>
    <instantiate from="root/src/app_package/WelcomeActivity.java.ftl"
                   to="${escapeXmlAttribute(srcOut)}/${activityClass}.java" />
    <open file="${escapeXmlAttribute(srcOut)}/${activityClass}.java" />
</#if>

</recipe>

③修改

C:\Program Files\Android\Android Studio\plugins\android\lib\templates\activities\WelcomeActivity\root\res\layout

目录下面的布局文件,成为你需要的创建activity的通用文件,注意文件名字要改成你前面引用的名字相同,这里是:

activity_welcome.xml.ftl

具体:

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   />

我这里是欢迎页,所以只需要一个图片就行了

④修改

C:\Program Files\Android\Android Studio\plugins\android\lib\templates\activities\WelcomeActivity\root

下的注册文件,和之前一样名字改成:AndroidManifest.xml.ftl

  <#import "../../common/shared_manifest_macros.ftl" as manifestMacros>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" >
    <application>
        <activity android:name=".${activityClass}"
           android:theme="@style/Theme.AppCompat.NoActionBar"
           >
 
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
           
        </activity>
    </application>

</manifest>

这个文件按照你的想法去改

⑤修改

C:\ProgramFiles\Android\AndroidStudio\plugins\android\lib\templates\activities\WelcomeActivity\root\src\app_package

目录下的两个文件,这两个文件可以修改一个,然后去复制一份到另外一个文件就行,也就是内容一样,文件名字改成

WelcomeActivity.java.ftl和WelcomeActivity.kt.ftl

package ${packageName};
import ${superClassFqcn};
import android.os.Bundle;
import android.os.Handler;
import android.content.Intent;
import android.view.Window;
import android.view.WindowManager;


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


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

                WindowManager.LayoutParams.FLAG_FULLSCREEN);

//这步很关键,这里的意思就是创建的时候勾选了generateLayout这个选项就会生成布局文件,如果不勾选就没有

           <#if generateLayout>
        setContentView(R.layout.${layoutName});
</#if>


//for a moment to start a activity
Handler handler=new Handler();

handler.postDelayed(new Runnable(){
@Override
public void run(){
//start a new activity
Intent intent=new Intent(${activityClass}.this,$NewActivity.class);
startActivity(intent);
finish();

}

},WAIT_TIME);





    }


}

⑥这样就大功告成了,新建项目或者新建一个activity的时候就是出现WelcomeActivity的模板,整体很简单,但结合自己的项目

中去,将自己创建activity所通用的代码写到模板中,这样可以节省很多的时间


代码的网址:https://download.csdn.net/download/qq_21451739/10494793







相关文章: