株式会社ライブキャストロゴ 株式会社ライブキャスト

Android Market公開を目指してAndroidアプリを開発する!の続きです。

早速、画面を作っていきたいと思います。
TranslatAIRの翻訳画面がありますので、それをベースに作っていきます。

translatair

これをAndroid風にすると、こんな感じ。

activity

画面のデザインはxmlで行います。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <EditText
    	android:id="@+id/srctext"
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    android:layout_weight="1"
	    android:layout_margin="5dp"
	    android:inputType="textMultiLine"
	    android:gravity="top"
	    />
	<LinearLayout
		android:orientation="horizontal"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		>
		<Spinner
			android:id="@+id/srclanguage"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent"
		    android:layout_weight="1"
			android:layout_marginLeft="5dp"
			/>
		<ToggleButton
			android:id="@+id/vector"
		    android:layout_width="wrap_content"
			android:layout_height="fill_parent"
			android:textOff=">>"
		/>
		<Spinner
			android:id="@+id/dstlanguage"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent"
		    android:layout_weight="1"
			android:layout_marginRight="5dp"
			/>
	</LinearLayout>
    <EditText
    	android:id="@+id/dsttext"
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
    	android:layout_weight="1"
	    android:layout_margin="5dp"
	    android:inputType="textMultiLine"
	    android:gravity="top"
	    />
	<LinearLayout
		android:orientation="horizontal"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:gravity="right"
		>
		<Button
			android:id="@+id/tweet"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent"
	    	android:layout_weight="1"
			android:layout_marginLeft="5dp"
		    android:text="tweet"
		    />
		<Button
			android:id="@+id/translate"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent"
	    	android:layout_weight="1"
	    	android:layout_marginRight="5dp"
		    android:text="translate"
		    />
	</LinearLayout>
</LinearLayout>

次に、画面を表示したときの初期化処理を実装します。

まず、翻訳言語を選択するSpinnerコントロール(セレクトボックスみたいなやつです)のリストを設定します。TranslatAIRは9カ国語対応にしていますので、今回も同様にします。

翻訳言語リストの設定値は、strings.xmlというリソースファイルに記述しておきます。

strings

中身はこんな感じです。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">TranslatorSample1</string>
    <string-array name="language_label">
        <item>English</item>
        <item>Japanese</item>
        <item>Chinese</item>
        <item>Italian</item>
        <item>Spanish</item>
        <item>French</item>
        <item>German</item>
        <item>Russian</item>
        <item>Korean</item>
    </string-array>
</resources>

このリソースファイルを読み込んで、Spinnerコントロールのリストを設定します。

    private void initSpinners() {
    	Spinner spSrc = (Spinner)findViewById(R.id.srclanguage);
    	Spinner spDst = (Spinner)findViewById(R.id.dstlanguage);

    	String[] labels = getResources().getStringArray(R.array.language_label);
    	ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels);

    	spSrc.setAdapter(adapter);
    	spDst.setAdapter(adapter);
    }

ただ、これだと表示されるリストがすごく狭いので、

spinner

選ぶのに不便です。
なので、1行付け足します。setAdapterする前に設定します。

    	adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

dropdown

これで、ずいぶん選びやすくなったと思います。

次に、Buttonコントロールを初期化します。
といっても、今回はクリック時のイベントリスナーを用意しただけです。

    private void initButtons() {
        // 翻訳方向ボタン
        ToggleButton btnVector = (ToggleButton)findViewById(R.id.vector);
        btnVector.setTextOff(">>");
        btnVector.setTextOn("<<");
        btnVector.setBackgroundResource(android.R.drawable.btn_default);

        // Tweetボタン
        Button btnTweet = (Button)findViewById(R.id.tweet);
        btnTweet.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub

			}

        });

        // 翻訳ボタン
        Button btnTranslate = (Button)findViewById(R.id.translate);
        btnTranslate.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub

			}

        });
    }

クリック時の処理は、後で実装することにします。

初期化処理をonCreate時に呼び出すようにします。

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        initSpinners();
        initButtons();
    }

こんな感じになりました!Spinnerコントロールにちゃんと値が設定されていますね。

init

サンプルソース