Android Market公開を目指してAndroidアプリを開発する!の続きです。
早速、画面を作っていきたいと思います。
TranslatAIRの翻訳画面がありますので、それをベースに作っていきます。
画面のデザインは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というリソースファイルに記述しておきます。
中身はこんな感じです。
<?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); }
ただ、これだと表示されるリストがすごく狭いので、
選ぶのに不便です。
なので、1行付け足します。setAdapterする前に設定します。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
これで、ずいぶん選びやすくなったと思います。
次に、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コントロールにちゃんと値が設定されていますね。
サンプルソース
- TranslatorSample1:ダウンロード