Android勉強日記2

ぼちぼちEclipseで開発開始。

プロジェクト作成

とにもかくにもAndroidプロジェクトを作成する。
以下の設定が必要みたい。

  • プロジェクト名
  • BuildTarget
    • 対象のOSを選択
  • アプリケーション名
    • HOME画面に表示されるもの
    • 単語スペース区切りで記述するのが慣例みたい
  • パッケージ名
  • CreateActivity
    • チェックボックスがついてる。基本的にはONにしとくっぽい
    • ここに記述したActivityは自動生成される
    • 起動時にはここに記述したものがActivityが開く
    • プロジェクト名と同じにするのが慣例みたい
  • MinSDKVersion

以上を設定して完了すると、記述したパッケージ名配下にCreateActivityに記述した値を名前とするjavaファイルができる。
また、プロジェクト配下に以下のディレクトリ、ファイルが作成される。(一部省略)

  • src
  • gen
    • 生成時はリソースの内容を参照できるR.javaが生成されている
    • 次のresディレクトリ配下に配置したxmlの内容はこのR.javaから参照できる
    • R.javaは自動更新される
  • res
    • layout
      • 生成時はmain.xmlが作成されている
    • values
      • 生成時はstring.xmlが生成されている
  • AndroidManifest.xml
  • default.properties
    • BuildTargetが記述されている

試しに起動してみる

  • プロジェクト名: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に記述することでコードと見た目を分離できるつくりになってるみたい。
突然レイアウトとかの変更があってもソースの改修が発生しないわけですね。すてき。

スポンサーリンク