2012年12月10日月曜日

[Android] テンプレートを作成する(Object編)

今までProjectActivityとテンプレートを作成してきました。最後にObjectのテンプレートを作成します。

Objectといっても広すぎるので、Fragmentを生成するテンプレートにします。

Objectのテンプレートは
[SDK_ROOT]/tools/templates/other配下にあります。

ここにFragmentという名前のテンプレートを作成します。
(なんでよく使うFragmentのテンプレートが最初から無いんだろう(^_^;))

templates配下のフォルダ構成です。


template.xml
<?xml version="1.0"?>
<template
    format="1"
    revision="1"
    name="New Fragment"
    description="Creates a new fragment class">
    <dependency name="android-support-v4" revision="8" />

    <parameter
        id="className"
        name="Class Name"
        type="string"
        constraints="class|unique|nonempty"
        default="MyFragment" />

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

</template>

今回はFragmentなのでSupport Libraryをインポートします。

recipe.xml.ftl
<?xml version="1.0"?>
<recipe>
    <instantiate from="src/app_package/Fragment.java.ftl"
                   to="${srcOut}/${className}.java" />
</recipe>
globals.xml.ftl
<?xml version="1.0"?>
<globals>
    <global id="srcOut" value="src/${slashedPackageName(packageName)}" />
</globals>
Fragment.java.ftl
package ${packageName};

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ${className} extends Fragment {

    @Override
    public void onAttach(Activity activity) {
        // TODO 自動生成されたメソッド・スタブ
        super.onAttach(activity);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO 自動生成されたメソッド・スタブ
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // TODO 自動生成されたメソッド・スタブ
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO 自動生成されたメソッド・スタブ
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public void onStart() {
        // TODO 自動生成されたメソッド・スタブ
        super.onStart();
    }

    @Override
    public void onResume() {
        // TODO 自動生成されたメソッド・スタブ
        super.onResume();
    }

    @Override
    public void onPause() {
        // TODO 自動生成されたメソッド・スタブ
        super.onPause();
    }

    @Override
    public void onStop() {
        // TODO 自動生成されたメソッド・スタブ
        super.onStop();
    }

    @Override
    public void onDestroyView() {
        // TODO 自動生成されたメソッド・スタブ
        super.onDestroyView();
    }

    @Override
    public void onDestroy() {
        // TODO 自動生成されたメソッド・スタブ
        super.onDestroy();
    }

    @Override
    public void onDetach() {
        // TODO 自動生成されたメソッド・スタブ
        super.onDetach();
    }

}
空のFragmentを生成します。FragmentのライフサイクルはActivityより多くてよく忘れるのでライフサイクル順にOverrrideさせてます。

手抜きですがこれで完成です。(手の込んだやつは追々...)
あとはActivityと同様にEclipseから以下の手順で追加できます。
[ファイル]→[新規]→[その他]→[Android]→[Android オブジェクト]

Create Android ObjectでFragmentを選択し、Class Nameを入力したら完了です。


これでFragmentを生成することができました。

一応作成したのを置いておきます。Fragment.zip

これで一通りのテンプレート作成は終了です。Projectのテンプレートは現在1つしか作れないため最小構成になると思いますが、ActivityとFragmentは実際に使う場合、標準のLoginActivityなどのように用途に合わせて作成するとより便利になります。

...といっても個人で作るのは限界があるので、Googleか誰かがテンプレートの共有サイト(システム)を作ってくれないかなぁ...と[壁]_・)チラッ

0 件のコメント:

コメントを投稿