ぼちぼちEclipseで開発開始。
プロジェクト作成
とにもかくにもAndroidプロジェクトを作成する。
以下の設定が必要みたい。
- プロジェクト名
- BuildTarget
- 対象のOSを選択
- アプリケーション名
- HOME画面に表示されるもの
- 単語スペース区切りで記述するのが慣例みたい
- パッケージ名
- CreateActivity
- チェックボックスがついてる。基本的にはONにしとくっぽい
- ここに記述したActivityは自動生成される
- 起動時にはここに記述したものがActivityが開く
- プロジェクト名と同じにするのが慣例みたい
- MinSDKVersion
以上を設定して完了すると、記述したパッケージ名配下にCreateActivityに記述した値を名前とするjavaファイルができる。
また、プロジェクト配下に以下のディレクトリ、ファイルが作成される。(一部省略)
試しに起動してみる
- プロジェクト名:HelloWorld
- アプリケーション名:Hello World
- CreateActivity:HelloWorldActivity
この状態でデバッグを実行。
タイトルに「HelloWorld」
メイン画面に「Hello World, HelloWorldActivity!」
と表示されました。
どういうことなの…
HelloWorldActivity.javaを見てみる。
public class HelloWorldActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
setContentViewでどうやら上で記述したR.javaから何か呼び出してるっぽい。
プロジェクト作成時に生成されたres/layout/main.xmlが怪しい気がするので見てみる。
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />
@stringが何か参照してる予感がするのでres/values/strings.xmlを見てみる。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, HelloWorldActivity!</string> <string name="app_name">HelloWorld</string> </resources>
どうやらstringとして定義した内容は@string/hogeの形式で呼び出せるっぽい。
ここではhelloを「Hello World, HelloWorldActivity!」として定義しているため、main.xmlのTextViewのandroid:textにはこの値が入る。
HelloWorldActivity.javaではContentViewとしてmain.xmlを指定しているため、こちらに記述されたTextViewの内容が表示される模様。
タイトルはAndroidManifest.xmlで同じように@string/app_nameを呼び出してました。なるほど。
レイアウトやラベルをxmlに記述することでコードと見た目を分離できるつくりになってるみたい。
突然レイアウトとかの変更があってもソースの改修が発生しないわけですね。すてき。