2012年2月25日土曜日

【Forest君用】Hello World その3

「Hello Android!」アプリの画面レイアウトを定義する
xmlファイルを見ていきます。

res/layout内にあるmain.xmlを開くと次の様に表示されます。


見覚えのある画面ですね。
これをみるとこの"main.xml"で画面が設定されていることが良くわかるはずです。

eclipseでは、レイアウトを定義するxmlについては、
デフォルトで"Graphical layout"で表示されます。
これはGUI(グラフィカルユーザインターフェース)を用いて
視覚的、直感的にレイアウトを生成できるようにするためです。
基本的にはこれを使って作成してもいいですが、実体は知っておきましょう。

画面の下のほうに「main.xml」タブがあると思うので、そこをクリックします。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

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

</LinearLayout>

さっきまで見ていた画面はこの文字列で定義されています。
ここについても突き詰めると難しくなりますので、簡単に説明します。

まず2行目の"LinearLayout"。
これはViewという画面を構成する要素を縦、または横に配置していくレイアウトです。
2行目~5行目で"LinearLayout"自身の定義。
12行目で"LinearLayout"の終了を意味します。
つまりそれに囲まれた部分(6行目~11行目)に記載されているのがView要素となります。

7行目がView要素である"TextView"。
読んで字のごとくテキストを扱うViewです。
ここで定義した文字列が画面に表示されます。

大枠はこんなところです。
続いて、それぞれの定義について説明します。

まずは"LinearLayout"ですが、
3行目と4行目で縦、横の幅の設定がされています。
ともに"fill_parent"となっていますので親layoutに合わせるという事です。
(ここでは親となるlayoutがないので、画面をフルで使用します)
5行目でViewを追加する方向を指定します。
"vertical"なら縦、"horizontal"なら横です。

次に"TextView"。
8行目と9行目は縦、横の幅の設定。
(LinearLayoutと一緒ですね)
10行目で画面に表示するテキストを設定します。
ここで疑問に思う方もいるかもしれません。
"Hello World, HelloAndroidActivity!"じゃなくて"@string/hello"が設定されてるよ、と。
これはstrings.xmlの"hello"で定義された文字列を設定することを意味しています。
strings.xmlはres/values内にありますので見てみてください。
ちゃんと定義されています。
<string name="hello">Hello World, HelloAndroidActivity!</string>

勿論、10行目で直接"Hello World, HelloAndroidActivity!"と記述することで
同じ結果が得られますが、こういったハードコーディングは非推奨の為、
xmlファイルで管理されています。
固定文言は極力strings.xmlに記述するようにしましょう。

以上です。
今回の内容の理解を深める為に、暇があったら次のことを試してみるといいかもしれません。

  1. TextView(7行目~10行目)をコピーして、11行目に張り付け
  2. 上記1.を行ったうえで、LinearLayoutの "vertical"⇒"horizontal"へ変更

次回はTextViewを動的に設定する方法でもしてみようかな~

【Forest君用】Hello World その2

最近バタバタしてて、なかなか更新できないsirocoです。。。

「Hello Android!」アプリを作成してからだいぶ日が経ちましたが、
今回は、中身を見ていこうと思います。
とはいっても、詳細まで理解するためではなく、
大まかな構造や、アプリを作っていくうえで最低限必要なところだけ、
押さえていきます。

まずはJavaソースから見ていきます。
src/作成したパッケージ内にある「HelloAndroidActivity,java」を開きます。
次の様になっているはずです。

package jp.gr.java_conf.siroco.helloandroid;

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

public class HelloAndroidActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

1行目、ここはこのソースがどのパッケージに属しているかを示します。

3、4行目、"import ~" で外部パッケージのクラスを使用できるようになります。
この例だと、「android.app」パッケージの「Activity」クラスと
「android.os」パッケージの「Bundle」クラスを使用しているという事です。

5行目以降が「HelloAndroidActivity」クラスの実装内容です。

一言で書くと、
「Activity」クラスを継承した「HelloAndroidActivity」クラスは、
スーパークラスの"onCreate"メソッドをオーバーライドし、
そのメソッド内で同一パッケージ内に存在する「R.java」の「layout」クラスで定義されたID
"main"に紐ずくxmlファイルをアプリケーションの画面レイアウトとして設定している。
といった感じでしょうか。

始めての方はさっぱり何のことかわからないと思います。
今回覚えておいてほしいのは次の3点です。
  • 「Activity」クラスがアプリの画面を作成する
  • アプリ起動時 は"onCreate"メソッドが実行される
  • 画面レイアウトはxmlファイルで定義した内容を設定する

1点目。
Androidアプリの画面はほぼ 「Activity」クラス で作成さてています。
「Activity」クラスには、起動したときに実行するメソッド、終了したときに実行するメソッド、
アプリがバックグラウンド表示(他のアプリが表で起動しているなど)のときに実行するメソッド、
など画面の状態にあわせたメソッドが用意されています。
但し 「Activity」自体は自信を拡張して使用するために用意された雛型の様なクラスですので、
各アプリでこれをextends(継承)して、それぞれに合った機能を実装していきます。
「HelloAndroidActivity」でいうと、画面レイアウトを設定する機能を追加実装しています。

2点目。
「Activity」クラスに画面の状態に合わせたメソッドが用意されていることは
1点目で書きましたが、起動時に実行されるのが"onCreate"というメソッドです。
このメソッドは、起動時に1度だけ実行されるメソッドですので、
アプリの画面の設定や、項目の初期化などはこのメソッドで行います。
Androidアプリ開発で一番お世話になるメソッドではないでしょうか?
「HelloAndroidActivity」ではソースの13行目で画面レイアウトを設定しています。
(これをしないと、、、13行目を消して実行してみるとわかります。)

3点目。
ソースの13行目に"setContentView(R.layout.main)"とありますが、
これは「Activity」クラスに用意された"setContentView"メソッドに
引数として"R.layout.main"を渡しています。
"R.layout.main"の実体は数字の羅列で、IDとして使用されています。
そのIDが示すのが、"main.xml"です。
このxmlファイルで定義された画面レイアウトを"setContentView"メソッドが読み取って
画面に設定しているという事です。
("main.xml"は res/layout 内にあります。説明は次の機会に。。。)


以上です。
長々と説明しましたが、
アプリの画面を作る際は、「Activity」クラスを使用して、
"onCreate"メソッド内で画面を設定しましょう。
と言う事です。

説明ベタだけど伝わるかな。。。

2012年2月20日月曜日

【Forest君用】実機での実行

前回、"Hello World !"をエミュレータで実行しましたが、
今回は同じプログラムを実機で実行する方法です。

まずは端末側の設定から。
「設定」⇒「アプリケーション」をタップします。
「提供元不明のアプリ」にチェックを入れます。



「開発」をタップします。
「USBデバッグ」にチェックを入れます。


以上で端末側の設定はOKです。

続いてPCでの作業です。
まず、端末をPCに接続して、eclipseを起動します。
エミュレータの時と同様、「実行」⇒「実行構成」をクリックします。
ウィンドウが立ち上がったら、「ターゲット」タブを選択し、
「手操作」にチェックを入れて「実行」をクリックします。
(エミュレータのときは「自動」がチェックされていたはず)


すると次のようなウィンドウが立ち上がります。


端末の設定が正しくされていたら、上記のように接続した端末が
ターゲットとして選択できるはずです。
端末を選択した状態で「OK」をクリックすると、アプリのインストールが開始されます。
端末でもエミュレータのときと同様の画面が表示されたらOKです。

補足として端末で設定した内容の説明を書いときます。

提供元不明のアプリ 正規ルート(公式マーケット)からの入手でない
apkファイルをインストール出来るかどうかを設定。
USBデバッグデバッグ環境(通知なしでのアプリケーションインストール、
ログの収集、PC・デバイス間でのファイルコピー、など)を
使用可能にするかどうかを設定

因みに、通常時はUSBデバッグをOFFにしましょうね。
セキュリティの低下を招くことあるらしいから。。。

今回は以上です。
次回は"Hello World !"の中身を見ていきます!

2012年2月14日火曜日

【Forest君用】Hello World

"Hello World !"

プログラマなら一度は聞いたことのある有名なフレーズですが、
画面に文字列を表示する簡単なプログラムを示し、
多くのプログラミング言語の入門の際にこのプログラムを
一番最初に作るのが伝統となっています。

前回までに構築した環境を使用して、
"Hello World !"アプリケーションを作ってみたいと思います。

まずはeclipseを立ち上げ、「ファイル」⇒「新規」⇒「プロジェクト」をクリックします。


ウィンドウが表示されるので、「Android」⇒「Androidプロジェクト」を選択して「次へ」をクリックします。


プロジェクト名を入力する画面になりますので、今回は"helloAndroid"と入力し、「次へ」をクリックします。



ビルドターゲットを入力する画面になりますので、ターゲットとするAPI Levelを選択します。
今回は"Android 2.2"を選択します。



アプリケーション情報を入力する画面になりますので、次の項目を設定していきます。

アプリケーション名そのまま。アプリの名前を設定
パッケージ名Javaパッケージ名を設定
アクティビティの作成チェックを入れることで、Activiityを継承したクラスを自動生成。
その際のクラス名を設定
Minimum SDKAndroidのAPI Levelを設定

項目の説明を簡単にすると、アプリケーション名は説明不要ですね。
今回は"HelloAndroid"とします。

Javaパッケージとは、複数のクラスを共通の名前空間でまとめることで、
カテゴリや類似機能ごとでクラス群を管理できるというものです。
(わからない人は、ファイルをフォルダごとに管理するイメージでいいかも。。。)

パッケージ名に関しては、一意なものの使用が定められていて、
一般的にはドメインと、いくつかのサブドメインリストを逆に並べたものを使用します。
(ドメインが「siroco.co.jp」なら、「jp.co.siroco」がパッケージ名、みたいな感じ。。。)
ただ、個人でドメインを保有していることは少ないので、
sirocoは「パッケージ名登録/利用サービス」を使用しています。

今回は練習なので「com.example.helloandroid」のような適当なものでOKです。

残りの項目は自動で設定されますので、「完了」をクリックします。


ここまでを完了すると、eclipseのパッケージエクスプローラ(デフォルト設定だとeclipseの左半分の窓のこと)上に
次の画のような階層でプロジェクトが生成されます。


実際のJavaソースは、src/設定したパッケージ名配下に作成されています。


実は、この状態でアプリは完成しています。
エミュレータを使用して実行してみましょう。

まず、「実行」⇒「実行構成」をクリックします。


ウィンドウが立ち上がるので、左の一覧の中の「Android アプリケーション」をダブルクリックします。
すると「新規構成」として、画面が切り替わるので、その中の「参照」をクリックします。


プロジェクトの選択画面が表示されるので、一覧から"helloAndroid"を選択して「OK」をクリックします。


「新規構成」のなかの「ターゲット」タブを選択し、ターゲットとなるエミュレータを選択します。
この状態で「実行」をクリックしたらエミュレータにアプリがインストールされます。


少し時間は掛かりますが、エミュレータが立ち上がり、次の画面が表示されたら成功です!



なんだこれだけ?? と思うかもしれませんがここまでの一連の動作が、
毎回のアプリ作成の基本となりますので、覚えておいてください。


。。。ふう
数分の作業の説明なのに、結構時間がかかるなorz

2012年2月5日日曜日

【Forest君用】エミュレータの起動

開発環境の準備が整ったので、アプリ開発を始めていきますが、
作ったアプリの動作を確認するエミュレータの設定・起動について確認していきます。

eclipseを起動して、「ヘルプウインドウ」⇒「ADV Manager」をクリックします。


ADV Managerが起動したら、「新規」ボタンをクリックします。


「名前」に任意の名称を設定します。
「ターゲット」にエミュレータで使用したいAPI Level を選択します。
「skin」の「ビルトイン」をPCの画面サイズ等に合わせて設定します。
(デフォルトだと画面に入らない場合があるかも。。。)
設定がすべて出来たら「Create ADV」ボタンをクリックされます。


ADV Manager上に作成したADVが表示されますので、選択して「開始」ボタンをクリックします。


おなじみのエミュレータが表示されます。


Webブラウザとかも使用できるので、楽しいですよ~
PCのスペックによっては動き遅いかも。。。


アプリの開発時はここで設定したエミュレータに自作アプリをインストールして、テストを行います。

今回は以上です。

【Forest君用】Android Pluginインストール

Androidアプリ開発の為の環境構築その5です。

Android Pluginインストール

eclipseにAndroid Plugin をインストールします。 
eclipseを起動し、「ヘルプ」⇒「新規ソフトウェアのインストール...」をクリックします。


「追加」ボタンをクリックします。


「名前」に"Android_Plugin"、
「ロケーション」に"https://dl-ssl.google.com/android/eclipse/"を入力します。
(「名前」は任意の名称でOKです)


「開発ツール」が表示されますので、チェックボックスを選択し、「次へ」ボタンをクリックします。


「次へ」をクリックします。


ライセンスが表示されますので、同意される場合は、チェックボックスをクリックして、
「完了」ボタンをクリックします。


インストールが実行されます。


未署名コンポーネントインストールへの警告が表示されるので「OK」をクリックします。


インストールが完了したら、eclipseを再起動します。


再起動したeclipseにPluginが表示されたら完了です。


【Forest君用】環境変数の設定 - Android SDK

Androidアプリ開発の為の環境構築その4です。

Android SDK のPath設定

Android SDK のインストールが完了したら、環境変数の設定をします。

「コンピュータ」を右クリックし、「プロパティ」を表示して、
「システムの詳細設定」をクリックします。


「環境変数」ボタンをクリックします。


「システム環境変数」の「Path」を選択し、「編集」ボタンをクリックします。


変数値にインストールしたAndroid SDK の「tools」と「platform-tools」のフルパスを追加します。
sirocoの場合、"D:\android\android-sdk\tools;"と"D:\android\android-sdk\platform-tools;"を追加します。


「OK」をクリックして完了です。

設定の確認として、コマンドプロンプトより「adb」コマンドを実行して
次の表示がされたら設定完了です。
(コマンドプロンプトは「Ctrl」+「R」で表示したウインドウから"cmd"入力して「OK」で表示できます)



【Forest君用】Android SDK導入

Androidアプリ開発の為の環境構築その3です。

Android SDK の導入

Android SDK とはAndroidアプリ開発用のKitだけでなく、実行用のエミュレータ、「adb shell」などのコマンドを実行するツールがセットになったものです。

次のダウンロードページ<http://developer.android.com/sdk/index.html>でインストーラが公開されているので、
「installer_r16-windows.exe」をクリックし、ローカルに保存します。
(r16の部分はバージョンの為、異なる場合があります)



ダウンロードしたファイルを実行すると次のようなウインドウが表示されます。
基本的には「Next」ボタンで進んでいけばOKです。
途中、インストールフォルダを聞かれるので、設定し進んでください。
(設定したフォルダはpathを通す必要があるので、Memoっときましょう)







「Finish」ボタンをクリックすると、SDK Manager が起動します。
SDK Manager でインストールするパッケージを選択し、「Install x packages ...」ボタンをクリックします。
後はインストールされるのを待つのみ。。。
(珈琲でも飲んでお待ちください)
途中、ダイアログが表示された場合は「Yes」でOKです。

※パッケージは「Tools」と、開発に使用するAPIレベルのものを選択すればOKです。
(デフォルトは最新バージョンのみ選択されています)


pathを通すのは別の機会に。。。
(はぁ、時間が掛かる)

【Forest君用】eclipseインストール

Androidアプリ開発の為の環境構築その2です。

eclipse のインストール

eclipse とは統合開発環境のことです。
Android プログラミングを行う方法は色々とありますが、
eclipse を使用して行う方法が簡単なのでsirocoはその方法をとっています。

まずはダウンロードページ<http://mergedoc.sourceforge.jp/>より
「Eclipse 3.7 Indigo」ボタンをクリックします。
(手間を省くため、日本語化プラグイン同梱のPleiades All in One をインストールします)


表示されたページのJava用パッケージの「Download」ボタンをクリックし、「保存」をクリックします。
※JDKはインストール済みですので、基本的には「JREなし」でいいでしょうが、
Tomcatとか入れたい場合は「JREあり」でもいいです。


容量が大きいので結構時間がかかります。。。
(珈琲でも飲んでお待ちください)

ダウンロードしたzipファイルを所定のフォルダに解凍します。
解凍したフォルダ内にeclipseフォルダがあります。
その中のeclipse.exeを実行するとeclipseが起動します。

ワークスペースの選択ウインドウが表示されるので、
選択して「OK」ボタンをクリックします。
(良く分からない場合はデフォルトのままでOKです)


次の画面が表示されたら、eclipseのインストールが終了です。


2012年2月4日土曜日

【2027シミュレート】 シミュレート方法

アプリ開発とは関係ないので、タイトル見てピンとこない人は見ないでね。。。

【Forest君用】JDK導入

Androidアプリ開発の為の環境構築その1です。

JDK の導入

AndroidアプリをJavaベースで開発する場合、JDK [Java SE Development Kit] の
インストールが必要となります。
JDKダウンロードページ<http://www.oracle.com/technetwork/java/javase/downloads/index.html>より、
ダウンロードするバージョンのDownloadボタンをクリックします。
(sirocoの場合はJava SE 7u2をダウンロードします。)



 「Oracle Binary Code License Agreement for Java SE」に同意したら、
「Accept License Agreement」にチェックを入れ、
インストールするプラットフォームに対応したJDKをクリックし、「保存」をクリックします。
(sirocoの場合はWindowsが32ビットなので、jdk-7u2-windows-i586.exeをダウンロードします。)


sirocoのところは"光"通ってないから、時間が掛かる。。。org

ファイルのダウンロードが完了したら、exeファイルを実行します。
次のようなウインドウが表示されるので「次へ」をクリックします。


更に「次へ」をクリックします。




インストール先に問題がなければ「次へ」をクリックします。





以上でSDKのインストールは完了です。

環境変数の設定は別の機会でしようかな。。。