2012年11月04日

AndroidでHelloWorld(その2)

HelloWorldを作る。その2です。

前回作成したプロジェクトのディレクトリ構成の詳細とコードの作成(MainActivity)を目的とします。

 

プロジェクトのディレクトリ構成

プロジェクトの各ディレクトリについて、簡単に見ていきたいと思います。

srcフォルダ

helloworld_015

Source(ソース)ファイルを保管するフォルダです。
Javaソースファイルにクラスをガシガシ作っていきます。
srcフォルダ内の階層分けはパッケージを使ってやります。

genフォルダ

helloworld_016

Generated java ファイルを保管するフォルダです。
プロジェクトのビルドをした時、ソースファイルからプリコンパイルしたファイルを保管します。
全て自動生成されるファイルなので基本的に追加/編集/削除しません。

R.javaにはリソースIDが定義されており、リソースを利用する場合はRクラスからリソースIDを呼び出したりします。

クラスパスコンテナ

helloworld_017

使用するライブラリ(jarファイル)の定義コンテナになります。
ここではAndroid SDKに含まれるライブラリが定義されています。

assetsフォルダ

helloworld_018

Assets(アセット)を保管するフォルダです。
意味合い的にはリソースを保管するフォルダですが、後述のresフォルダとは扱いが違います。

  1. アクセスするにはAssetsManagerクラスを使う。
  2. フォルダを自由に作れる。
  3. ファイルのRead/Writeどちらも可能。
binフォルダ

helloworld_019

Binary ファイルを保管するフォルダです。
JavaソースファイルをコンパイルしたClassファイルが保存された…ハズ
このフォルダ内も全て自動生成されるファイルなので基本的に追加/編集/削除しません。

resフォルダ

helloworld_020

Resource(リソース)を保管するフォルダです。
デフォルトで色々フォルダがありますが、res/rawフォルダを作成することで自由なリソースを保存できます。
前述のassetsフォルダとは以下の点異なります。

  1. アクセスするにはリソースIDを使用する。(Rクラスから呼び出す)
  2. フォルダを自由に作れない。
  3. ファイルはReadのみ可能。
  4. 画面密度(DPI)によって使用するファイルを自動で切り替えることができる。

デフォルトのフォルダについても簡単に見てみたいと思います。

  • drawable-ldpi (Low DPI)
    100〜140dpiの画面の時使用されるリソース
  • drawable-mdpi (Medium DPI)
    140〜180dpiの画面の時使用されるリソース
  • drawable-hdpi (High DPI)
    190〜250dpiの画面の時使用されるリソース
  • drawable-xhdpi
    調べたけど分からなかった…しかしデフォルトで入っているIconのサイズが
    hdpiより大きかったのでそれ以上の画面の時に使用するリソースだと思われる。
  • layout
    Activityのレイアウトファイルがリソースとして保存される。
  • values
    文字列やスタイルなどの定義ファイルがリソースとして保存される。

「drawable-xxx」フォルダはldpi,mdpi,hdpiのほかにsmall,normal,large,port,land,ja,enなど様々な切り分け方ができるっぽい。

その他ファイル

helloworld_021

ここはプロジェクト直下なので、プロジェクト自体に関するファイルが多いです。

基本的には触らないファイルばかりですが、AndroidManifest.xmlファイルだけは大事です。

ManifestファイルにはAndroidアプリのバージョンや表示名、使用するアイコン、SDKバージョン、使用するActivityなど
基本的な構成が記載されています。

 

MainActivityの作成

最初にメインとなるActivityのMainActivityを作成します。(そのまんまだな…)

しかしその前にActivityとは何なのか軽く確認したいと思います。

 

Activityとは

Activityとは簡単に言うとアプリの実行画面そのものになります。

作成するファイルは2つです。

Javaファイル Activityを継承したクラス
画面の動き(振る舞い)を定義します。
XMLファイル xmlでActivityの画面レイアウトを定義します。

xmlによる画面レイアウトはLayout要素とWidget要素でユーザーインターフェースを構築しますが
ゲーム作成ではほぼ使わないのでサラっと流したいと思います。

逆にActivityクラスの生成や実行、終了といったライフサイクルについては
ゲームと非常に密接な関係にあり
重要なため別途じっくりやりたいと思います。

 

main_activity.xmlの作成

最初にレイアウトxmlファイルを作成します。
HelloWorldのres/layoutフォルダに対して、[新規] – [その他]から「Android XML レイアウト・ファイル」を選択します。

helloworld_010

以下の項目を入力し、「完了」ボタンでファイルを生成します。

プロジェクト HelloWorld
ファイル main_activity
ルート要素 LinearLayout

helloworld_011

すると以下のように、レイアウトをGUIで編集できるエディタが表示されます。
ファイルそのものはxmlなので、下部のタブを切り替えることでxmlを直接編集することもできます。

helloworld_012
レイアウトをGUIで編集する場合は、最大化ボタンでエディタを最大化したほうがやりやすいかも。

 

「HelloWorld!」というテキストを表示するためのView(TextView)を配置します。

PaletteメニューのForm WidgetsからTextViewを選び、ドラッグ&ドロップで配置します。

helloworld_013

TextViewを配置したら、エディタ右側のアウトラインで配置した「textView1」を選択し
Textプロパティを「HelloWorld」に変更します。

helloworld_014

結果をxmlで確認すると、以下のようになっています。

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



    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="HelloWorld" />

</LinearLayout>

MainActivityクラスの作成

次にActivityクラスを継承したMainActivityクラスを作成します。
HelloWorldのsrcフォルダに対して、[新規] – [クラス] で新規Javaクラスを作ってください。

パッケージ jp.co.example.helloworld
名前 MainActivity
スーパークラス android.app.Activity
スーパークラスからのコンストラクタ チェックを入れる

helloworld_008

すると以下のようなクラスが生成されます。

package jp.co.example.helloworld;

import android.app.Activity;

public class MainActivity extends Activity {

	public MainActivity() {
		// TODO 自動生成されたコンストラクター・スタブ
	}

}

ここで追加するメソッドはonCreateのみです。

Activityクラスからオーバーライドするので、[ソース] – [メソッドのオーバーライド/実装] を開き
onCreate(Bundle)にチェックを入れ、OKします。

メソッド一覧はabc順に並んでいますが、量が多いので探すのは大変です。
ここではキーボードでonCreateと入力するとそのメソッドへ飛ぶので検索できます。
また、メソッド・コメントの生成にもチェックを入れて起きましょう。

helloworld_009

するとオーバーライドされたonCreateメソッドが生成されるので、
以下のコードを追記します。

	/* (非 Javadoc)
	 * @see android.app.Activity#onCreate(android.os.Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO 自動生成されたメソッド・スタブ
		super.onCreate(savedInstanceState);

		setContentView(R.layout.main_activity);
	}

 

以上でコードのほうは作成完了です。

次はテスト実行環境となるAndroidエミュレータについてやりたいと思います。

 


今回使用した環境

OS Windows 7 HomePremium SP1 x64
IDE Eclipse 4.2 x64
Java jre Java 1.7.0_09 x64
Android SDK Android SDK Tools 20.0.3 x32

実行環境

Build Target SDK version Android 2.2 (API 8)
Minimum SDK version Android 1.5 (API 3)

 

タグ:Eclipse android java
posted by ちぼ at 16:23 | サンプル | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。