Hello, Android World! 解説その1

2012年5月10日木曜日

Android

t f B! P L

前回 Hello world を表示させましたが、これはデフォルトで新規作成されたプロジェクトがそのようなコードになっているからです。まずプロジェクトのディレクトリ構成から見ていきます。(取り急ぎ必要なところだけ)

helloproject.png
src
Java のソースコードを格納するディレクトリです。パッケージ名の下に HelloActivity.java というファイルがあると思います。
gen
Eclipse が勝手に生成するファイルが入るので気にしなくていいです。
assets
プログラムが利用する任意のリソースファイルを配置できます。デフォルトでは何も入っていないはずです。
bin
コンパイルされた実行ファイルが配置されます。
res
プログラムが利用するリソースファイルを配置します。drawable, layout, values というフォルダがあるはずです。ターゲットを高めのバージョンにした場合は drawable には末尾に -?dpi といった文字列がついた複数のフォルダができているかもしれません。それぞれ、画像、画面のレイアウト、値のリソースファイルを格納します。名称にはルールがあって、なんでもいいというわけにはいきません。
AndroidManifest.xml
アプリケーションの設定が書かれている xml ファイルです。
project.properties
Eclipse上のプロジェクトのプロパティが保存されています。直接編集はしません。

画面のレイアウトは res/layout の中に保存します。デフォルトの main.xml をダブルクリックして開いてみてください。右側のアウトラインという小窓に LinearLayout と TextView が階層構造で表示されています。これらが画面の中にある部品です。LinearLayout は複数の部品を並べる場合の並べ方を指定するレイアウトの一種で、それ自体は目に見えるものではありません。TextView はユーザには編集させないテキスト表示エリアです。編集可能なテキスト領域は EditText を使います。パレットからドラッグ&ドロップで画面をデザインすることができます。何か適当にボタンでも配置してみてください。配置したら、真ん中の小窓を Graphical Layout タブから main.xml タブに切り替えてください。xml が表示されます。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" >

  <TextView
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="@string/hello" />

  <Button
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Button" />

</LinearLayout>

layout_width と layout_height という属性は、それぞれ部品の幅と高さを指定するものです。fill_parent または match_parent で親要素の領域一杯まで広がろうとします。意味は同じです。使い分けについて気になる人は「fill_parent match_parent 違い」でググってください。wrap_content にすると表示するものの量に合わせて必要最小限のサイズになろうとします。 単位付きの数値で指定することもできます。ちなみに Android の単位は独特ですので単位指定しようと思ったらまずはググってください。
text という属性で初期表示テキストを指定します。ここで、TextView の text 属性の値に注目してください。@string/hello となっています。これは、res/strings.xml の中の hello という名前の要素を参照することを意味します。res/strings.xml を開いてみてください。

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="hello">Hello World, HelloActivity!</string>
<string name="app_name">Hello</string>

</resources>

name 属性が hello の要素は、Hello World, HelloActivity! となっています。これが @string/hello で参照されて TextView に表示されたわけです。@string/hello を @string/app_name に変えれば Hello と表示されるようになります。基本的に画面表示するテキストは全て、レイアウトの xml ファイルやソースコード中には直接書かず、strings.xml に記載してそれを参照させてください。理由はまた別の記事で説明します。

最後はソースです。これは次回説明します。

QooQ