読者です 読者をやめる 読者になる 読者になる

tech::hexagram

personal note for technical issue.

androidアプリを作ってみよう#2

ということで前回の続編です.

今日はhelloworld的なサンプルを作ってみましょう.

ファイル→新規→プロジェクトで,Androidプロジェクトを選択.

次に,このような画面がでてきます.

上から順に埋めるべきところを解説していきます.

プロジェクト名

プロジェクト名を設定します.開発のホームディレクトリが/workだとし,プロジェクト名をHelloWorldとすると,プロジェクト生成後/work/HelloWorldというディレクトリができあがり,この中に各種ファイルが保存されます.この中に保存されるファイルについては前回の記事をご参照下さい.

ビルド・ターゲット

ここでは対象とするandroidのバージョンを指定します.大概はandroid 1.6を設定すれば大丈夫かと思います.

アプリケーション名

例えばここではHelloWorldとします.

パッケージ名

これはandroid marketにアップロードする際に使用される名前です.
僕が前回紹介した全国放射線モニターでは
jp.nuclearmonitor.androidというパッケージ名を設定しました.

そして,androidマーケット内での僕のアプリのURLは以下のとおりです.
https://market.android.com/details?id=jp.nuclearmonitor.android

つまり,ここで設定したパッケージ名がマーケットでのURLに反映されるというわけです.
ちなみに,com.android.hogehoge等,アップロードできないパッケージ名もあるのでご注意を.

Create Activity

ここで設定した名前.javaがsrc/パッケージ名/の下に生成されます.

Min SDK Version

ビルドターゲットで指定したAPIレベルを入力します.

これでした準備完了です.

このあといじるべきファイルは2つです.

  • main.xml(res/layout/内)
  • HelloWorld.java(src/内)

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:id="@+id/text" 
    android:layout_width="fill_parent" 
    android:text="hello" 
    android:layout_height="wrap_content"/>
</LinearLayout>

LinearLayoutとは

アイテムを垂直方向あるいは水平方向に並べます.
android:orientation="vertical"ですので,ここでは垂直方向(画面縦方向)にアイテムを並べます.

android:layout_width="fill_parent"
android:layout_height="fill_parent"

これは,レイアウトを幅:全部,高さ:全部を占めますよ,と宣言しています.
ちなみにtextviewで宣言されているwrap_contentとは,必要最低限の幅だけとりますよ,という意味です.

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

1行ずつ解説します.まず,TextViewとは,画面上に文字列を表示するためのテキストボックスのようなものと考えてください.

android:id="@+id/text" これは,javaでボタンやテキストボックスを操作する際に,どのパーツを操作するか判断するためのidを設定しています.@+id/textとは,textというidを新規に追加しますよ,といった意味かと思います.
2行目と4行目は上記の説明通りです.
3行目では,テキストボックスに埋め込む文字列を指定します.後のjavaの解説でも述べますが,ここはjava側からも操作できます.

HelloWorld.java

以下のように記述します.

package jp.android.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloWorld extends Activity{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView display;
        display=(TextView)findViewById(R.id.text);
        display.setText("楽しい仲間がぽぽぽぽーん");
    }
}

import hogehogeですが,上2行は基本的に必須です.3つ目は,今回TextViewを使うので追加でインポートしております.
class HelloWorldとonCreateはプロジェクト作成時に自動生成されるので内側のコードを1行ずつ解説します.

super.onCreate(savedInstanceState);

おまじないのようなものと考えてください.superクラスを必ず呼び出すことになっています.

setContentView(R.layout.main);

このjavaで使用するxmlはR.layout.mainですよと言っています.ここでは,/layout/main.xmlを使うので,このような宣言となっています.

display=(TextView)findViewById(R.id.text);

ここでは,javaでTextViewを操作するに当たり,どのidのTextViewをいじるか,宣言しています.xmlで設定したidがtextでしたので,R.id.textと打ち込みます.

display.setText("楽しい仲間が〜");

xmlでもTextView内のテキストを編集できますが,javaで動的にいじることもできます.ここでは,xmlで設定したテキストを編集しています.

ここまで編集して,保存し,エラーが出ないことを確認したらemulatorで実行してみます.

ウィンドウ->Android SDKおよびAVDマネージャを選択します.

これは僕の作っておいたemulator群ですが,適当に選択して編集ボタンをおすとこんな感じの画面がでてきます.

ここで大事なのが,ターゲット部分(androidのバージョンを指定)と,スキン(画面サイズの設定)です.
androidoには,様々なバージョンや画面サイズがあるので,動作チェックは様々なバージョンに応じて行う必要があります.

とりあえずここでは,適当に1.6のバージョンでemulatorを起動してみましょう.開始ボタンをクリックし,emulatorが起動するまで待ちます.
この時,かなり時間がかかるので焦らずじっくりと待ちましょう.

ホーム画面が出てきたら,コンソールに戻ってCtrl+F11をクリックします.
この時,emulatorが起動していれば,そちらにソフトをインストールして自動的に実行されます.

実行後の画面はこんな感じです.

デザイン部分をxmlで編集し,挙動についてはjavaで記述するというのがなかなか慣れるまでは大変ですが,こんな感じでandroidアプリを開発することができます.