Android Studio Activity Template 快速創(chuàng)建

本文模版結(jié)構(gòu)參考:谷歌todo-mvp-rxjava

模版結(jié)構(gòu)


MvpActivity模版結(jié)構(gòu)

文件功能


app_package 存放模版生成所需class和layout

globals.xml.ftl 全局變量;可以定義任何想在模版中引用的變量

recipe.xml.ftl 模版生成腳本;定義模版生成規(guī)則

template.xml gui配置文件

template_blank_activity.png gui中的預(yù)覽圖片

開始編寫


最快的編寫辦法,當(dāng)然是從原有模版的基礎(chǔ)上修改嘍。。。

插件編寫最偷懶的辦法


當(dāng)然是在已經(jīng)存在的模版上,直接改嘍。。復(fù)制\Android Studio\plugins\android\lib\templates\activities\EmptyActivity到工作區(qū)

修改template.xml


template.xml與gui之間的對應(yīng)關(guān)系

在template.xml中,通過添加parameter節(jié)點的方式,創(chuàng)建gui中的控件。根據(jù)項目要,添加Contract、Presenter的定義。

修改globals.xml.ftl


該文件作用,定義全局變量。可以在java或layot模版中使用。

在原有文件基礎(chǔ)上,定義relativePackage參數(shù),因為我們的activity是創(chuàng)建在${packageName}.view文件夾下。

```

<global id="relativePackage" type="string" value="${packageName}.view">

```

編寫自己的class模版,app_package.class/app_package.layout



Activity.java.ftl

```

package ${packageName}.view;

import ${superClassFqcn};

import android.os.Bundle;

import android.content.Context;

import android.content.Intent;

import ${packageName}.contract.${contractClass};

import ${packageName}.presenter.${presenterClass};

public class ${activityClass} extends ${superClass} implements ${contractClass}.View {

private ${contractClass}.Presenter presenter;

public static Intent getIntent(Context ctx){

Intent intent = new Intent(ctx, ${activityClass}.class);

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

return intent;

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

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

initView();

initData();

}

private void initView(){

}

private void initData(){

presenter = new ${presenterClass}(this);

}

@Override

protected void onDestroy() {

presenter.destroy();

super.onDestroy();

}

}

```

IContract.java.ftl

```

package ${packageName}.contract;

public interface ${contractClass} {

interface View{

}

interface Presenter extends IBaseContract.IBasePresenter{

}

}

```

Presenter.java.ftl

```

package ${packageName}.presenter;

import ${packageName}.contract.${contractClass};

public class ${presenterClass} extends BasePresenter implements ${contractClass}.Presenter{

private ${contractClass}.View view;

public ${presenterClass}(${contractClass}.View view) {

this.view = view;

}

@Override

public void destroy() {

view = null;

}

}

```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 由于項目用上了 mvp 架構(gòu),基本上一個頁面就至少需要新創(chuàng)建6個類,分別是 model view presente...
    大空ts翼閱讀 2,111評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,317評論 0 17
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,893評論 25 709
  • 旗木卡卡西&千鳥 白色的獠牙折斷了,深深刻在參天古木上 紅色的鮮血紛飛了,緩緩落在少年華發(fā)上 風(fēng)雨飄搖的夜里,雷電...
    江清書閱讀 433評論 1 1

友情鏈接更多精彩內(nèi)容