左はEclipseから実行した際に起動される、Androidの仮想デバイス。なかなかカッコイイです。
A N D R O I D _ と表示された後、初期化処理中にナイトライダーみたいな赤い横線が左右に動きます。
さて、前回は開発環境のインストールまででしたので、今回は恒例のHello Worldを作ってみたいと思います。
プロジェクトを作る
まず、以下の手順で新しくプロジェクトを作成します。
- File > New > Project と選択し、Android Project を作成します。
- プロジェクト作成ダイアログに必要な情報を入力します。
プロジェクト作成ダイアログでの入力情報は、プロジェクト名やパッケージ名は問題ないと思いますが、Activity nameというのはウィザードによって自動生成されるクラス名なので注意が必要です。Application nameの方はアプリケーションのタイトルのようなものなので何でも構いません。
プロジェクトの作成が完了したら、src配下の指定したパッケージ内にあるソースファイル(R.javaじゃないほう)を開いてみてください。以下のような内容になっていると思います。
public class Hello extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
}
}
Hello World
実は、この状態で起動すると「Hello World, Hello」というのが表示されます。そんなコードどこにもないのに!と思うかもしれませんが、それについては後で説明します。
さて、先ほどのソースコードを以下のように書き換えてみてください。
public class Hello extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
TextView tv = new TextView(this);
tv.setText("こんにちは");
setContentView(tv);
}
}
日本語表示の確認もかねて、「こんにちは」にしてみました。
上記のコードの中で、TextViewというのが出ますが、これは前回説明したようにViewの一種でテキストを表示するためのものです。そのTextViewのテキストとして「こんにちは」をセットし、コンテンツのViewとして設定しているだけです。
R クラス
最初のコードに戻り、setContentView(R.layout.main); という部分に注目します。この、R というクラスはなんでしょうか。
R.java を開いてみてください。
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package jp.flup.test;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040000;
}
}
コメントにあるように、このファイルはEclipseによって自動的に生成・更新されるもので手動で修正等してはいけません。先のコードでは、R.layout.main となっていたので、実際このクラス内のstaticな内部クラスのクラス変数を指定していることが分かります。
さて、ここでパッケージ・エクスプローラのresディレクトリを開いてみてください。この中のlayoutディレクトリ内にあるmain.xmlに注目しましょう。すぐ分かったと思いますが、res > layout > main.xml は、先ほどの R.layout.main と対応しているのです。
layout内のxmlを追加・修正すると自動的にR.javaが更新されるという仕組みです。ついでに、main.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"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, Hello"
/>
</LinearLayout>
LinearLayoutというのはおいておいて、その中にあるTextViewを見てみましょう。これは先ほど修正したコードで出てきたクラスと同じです。そのプロパティをxmlで指定しているわけです。どちらかというと、こちらの方法の方がビューとロジックを分離できる分、スマートだといえます。
今回のコードをまとめてアップしておきました(あまり意味はないかもしれませんが...)。
Android版Hello World
次は・・・
今回は、ほぼGoogleのHello, Androidを日本語にしただけになってしまいました...。次回はもうちょっと面白いものが作れたらいいなぁ~。。
あと、起動後のメニューからAPI DEMOで色々サンプルが見れるようでなかなか面白いです。


