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:ダウンロード





