| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
編集の要約なし
==[[Android Hello World チュートリアル]]==
[[Android]] | [[Eclipse]] | [[Java]] |
*http://developer.android.com/resources/tutorials/hello-world.html
*http://www.youtube.com/watch?v=cw5GrRK4AAgcw5Gr[[R]]K4AAg*[[Android SDKのインストール]]
===プラットフォームのインストール===
*Hello World アプリケーションを動かすためには少なくともAndoroidのプラットフォームの一つはSDK環境にインストールしておく必要がある。以下を参照。
*[[Android SDKのインストール|SDKのインストール] [SDKのインストール]*[[Android ADT Eclipse プラグイン] [|ADT Eclipse プラグイン]]
===AVDの作成===
*http://developer.android.com/guide/developing/tools/avd.html
*このチュートリアルでは、アプリケーションをAndroid エミュレータで走らせる。このチュートリアルでは、アプリケーションを[[Android エミュレータ]]で走らせる。*エミュレータを起動する前に、Android エミュレータを起動する前に、[[Android]] Virtual Device(AVD)を作成する必要がある。
*AVD はシステムイメージおよびデバイスのセッティングをエミュレータを利用して定義する。
=====Window - [[Android ]] SDK and AVD Manager を開く =====
[[File:0105_android_helloworld01.jpg]]
=====Select Virtual Devices De[[vi]]ces を選択し New を押下=====
Create New AVD ダイアログが開くので、my_avd のような名前を設定
[[File:0106_android_helloworld02.jpg]]
[[File:0107_android_helloworld03.jpg]]
===[[Android ]] プロジェクトの新規作成===http://www.youtube.com/watch?v=Q1SoGRAuVRsQ1SoG[[R]]AuV[[R]]s
===== File - New - Project. =====
[[File:0108_android_helloworld04.jpg]]
=====[[Android ]] Project を選択し、Nextを押下=====*ADTプラグインのインストールが成功していれば、Android ADTプラグインのインストールが成功していれば、[[Android]] フォルダに [[Android ]] Projectが存在する。(1つ以上のプロジェクトを作成したのち、Android 1つ以上のプロジェクトを作成したのち、[[Android]] XML File エントリも有効になる)
[[File:0109_android_helloworld05.jpg]]
=====プロジェクト詳細設定=====
*Project name: HelloAndroidHello[[Android]]*Application name: Hello, [[Android]]
*Package name: info.typea.helloandroid (プライベートのネームスペース)
*Create Activity: HelloAndroidHello[[Android]]
上記を設定し、Finish
[[File:0110_android_helloworld06.jpg]]
|-
|Project Name
|Eclipseのプロジェクト名。同名ディレクトリはプロジェクトのファイルを含む[[Eclipse]]のプロジェクト名。同名ディレクトリはプロジェクトのファイルを含む
|-
|Application Name
|アプリケーションの人間が読むためのタイトル。Android アプリケーションの人間が読むためのタイトル。[[Android]] デバイスに表示される。
|-
|Package Name
|パッケージのネームスペース(Javaでのルールに従う)。パッケージ名を生成されるスタブアクティビティの配下にセットする。パッケージ名はインストールされた [[Android ]] システムでユニークである必要がある。
|-
|Create Activity
|}
<blockquote>「Build Target」 選択したプラットフォームがAndroid 選択したプラットフォームが[[Android]] 1.1 プラットフォームを使うということは、アプリケーションが [[Android ]] 1.1 プラットフォームライブラリに向けてコンパイルされることを意味する。もし、Android プラットフォームライブラリに向けてコンパイルされることを意味する。もし、[[Android]] 1.5 プラットフォーム上で、1.1で作成されたAVDを走らせる場合、Build Target をあわせる必要はないAndroid をあわせる必要はない[[Android]] アプリケーションは、前方互換性を持っており、1.1 向けにビルドされたアプリケーションは、通常1.5でも起動する。逆は、成り立つわけではない。</blockquote>
===プロジェクト準備完了===
*プロジェクトの準備は以上で感rひょう。
*パッケージエクスプローラーで、HelloAndroidパッケージエクスプローラーで、Hello[[Android]].java ファイルを開くと、以下の様になっている。
[[File:0111_android_helloworld07.jpg]]
*このクラスは Activity Acti[[vi]]ty を基底クラスとしている。*Activity Acti[[vi]]ty はプラットフォームのアクションから利用される 一つのアプリケーションエンティティ。
*あるアプリケーションは、複数に分割されたアクティビティをもっているが、ユーザーが一度に対話するのはそのうちの一つ。
*onCreate() メソッドは [[Android ]] システムからActivityが開始したときに呼び出される。
*このメソッドは、すべての初期化およびUIのセットアップを実行すべき場所。
*あるアクティビティはユーザーインターフェースが必要な訳では無いが通常利用する。
package info.typea.helloandroid;
import android.app.ActivityActi[[vi]]ty;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid Hello[[Android]] extends Activity { /** Called when the activity acti[[vi]]ty is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, [[Android]]");
setContentView(tv);
}
====[http://developer.android.com/reference/android/app/Activity.html#setContentView(android.view.View) setContentView]====
*最後に、Activity 最後に、Acti[[vi]]ty UI の中心に表示するためにTextView をsetContentView()に渡す。*Activity Acti[[vi]]ty がこのメソッドを呼び出さないと、UIは存在せず、システムはブランクスクリーンを表示する。
*Activity クラスは、Contextを継承している。HelloAndroid クラスは、Contextを継承している。Hello[[Android]] クラスはActivityのサブクラス(もちろんContextのサブクラスでもある)*なので、HelloAndroid なので、Hello[[Android]] の参照を Context として、TextViewに渡すことができる。
===アプリケーションの起動===
#[[Eclipse ]] プラグインは自動的にプロジェクトの起動設定を生成し、エミュレータを起動する。#環境に依存するが、Androidエミュレータは、完全に起動するのに数分かかるので、これに耐える。環境に依存するが、[[Android]]エミュレータは、完全に起動するのに数分かかるので、これに耐える。#エミュレータが起動したら、Eclipse エミュレータが起動したら、[[Eclipse]] プラグインは、アプリケーションをインストールしてデフォルトのActivitiyを起動する
#以下の画面が表示される
[[File:0112_android_helloworld08.jpg]]
*"Hello, [[Android]]" とグレーのバーに表示されているところは、実際はアプリケーションのタイトル。*Eclipse プラグインは、これを自動生成する(この文字列は res/values/strings.xml で定義されており、AndroidManifestで定義されており、[[Android]]Manifest.xml から参照されている)
*タイトルの下が、TextView オブジェクトに設定した内容。
===UI を [[XML ]] レイアウトに変更する===
=====プログラミングによる UI レイアウト=====
*上記例は、プログラミングによる UI レイアウトで、アプリケーションのUIをソースコードで直接構築する手法。
*UIのプログラミングを数多く経験しているなら、プログラミングによるアプローチが、少しのレイアウトの変更がソースコード上で大きな頭痛の種となど、どれだけ不安定かになじみがあるだろう。
=====XMLによる [[XML]]による UI レイアウト=====*上記が、UIの生成にAndroidではXMLによるレイアウトファイルという代替方式を提供する理由上記が、UIの生成に[[Android]]ではXMLによるレイアウトファイルという代替方式を提供する理由
<?xml version="1.0" encoding="utf-8"?>
android:text="@string/hello"/>
*[[Android ]] XML レイアウトファイルの一般的な構造は簡単*[[XML ]] 要素のツリーとなっている。その中のノードそれぞれはViewクラスの名前となっている。*自ら作成したどんな名前のクラスでも、Viewを継承していれば [[XML ]] レイアウトの要素として利用できる
*この構造で、簡単にすばやくUIを作成でき、プログラミングするよりシンプルな構造と文法を利用できる。
*このモデルは、Web開発モデルに触発されており、アプリケーションのプレゼンテーション(UI)をロジックから分離する。を[[ロジック]]から分離する。
=====XML属性[[XML]]属性=====
{|class="wikitable"
!属性
|-
|xmlns:android
|XML 名前空間の定義。Android 名前空間の定義。[[Android]] tools に [[Android ]] 名前空間で定義された公開属性を参照させる。すべての [[Android ]] レイアウトファイルにおいて一番外側のタグにて必ず持つ必要がある属性。
|-
|android:layout_width
|}
=====res ディレクトリ=====
*これらの [[XML ]] レイアウトファイルは、res/layout/ に属している。"res" は、"resources" の略で、このディレクトリはコード以外のアプリケーション資産(レイアウトファイルに加えイメージ、サウンド、ローカライズ用文字列など)すべてを含む
====既に存在するアプリケーションをXMLレイアウトを使用するように変更既に存在するアプリケーションを[[XML]]レイアウトを使用するように変更====*[[Eclipse ]] プラグインは、自動的にレイアウトファイル(main.xml)を生成する。
*作成した"Hello World"アプリケーションでは、レイアウトをプログラムから生成し、このファイルは無視された。
*しかし、ほとんどの場合にはコードではなくXML しかし、ほとんどの場合にはコードではなく[[XML]] ファイルにレイアウトを定義すべき。*以下では、どのように既に存在するアプリケーションをXMLレイアウトを使用するように変更するのかを説明。以下では、どのように既に存在するアプリケーションを[[XML]]レイアウトを使用するように変更するのかを説明。
====main.xml 内容の置き換え====
*[[Eclipse ]] のパッケージエクスプローラーの /res/layout フォルダーを展開し、main.xml を開く(開いたら、ウィンドウ下部の mail.xml タブをクリックすると XML ソースが見える)*内容を以下の [[XML ]] に置き換える。
<?xml version="1.0" encoding="utf-8"?>
*res/values フォルダの中の strings.xml を開く
*これは、ユーザーインターフェースのすべてのデフォルトテキスト文字列を保存すべき場所
*[[Eclipse ]] を使っているなら、ADT が既に2つの文字列を hello と app_name を持ってる。*helloを "Hello, [[Android]]! I am a string resource!" 変更すると、以下のようになる。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello, [[Android]]! I am a string resource!</string> <string name="app_name">Hello, [[Android]]</string>
</resources>
====HelloAndroid Hello[[Android]] クラスの修正====*HelloAndroid Hello[[Android]] クラスを XML レイアウトを利用するように、以下の様に修正
package info.typea.helloandroid;
import android.app.ActivityActi[[vi]]ty;
import android.os.Bundle;
public class HelloAndroid Hello[[Android]] extends Activity { /** Called when the activity acti[[vi]]ty is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView([[R]].layout.main);
}
}
*setContentView に View オブジェクトの代わりに レイアウトリソースのリファレンスを渡す。リソースは、Rレイアウトリソースのリファレンスを渡す。リソースは、[[R]].layout.main として特定されるが、実際は /res/layout/main.xml で定義したレイアウトが解析されコンパイルされたオブジェクトを表す。*[[Eclipse ]] プラグインは自動でこの R.java クラスへ参照を生成する。*[[Eclipse ]] を使わない場合、Ant でアプリケーションをビルドすると生成される。
*アプリケーションを再度実行する。
[[File:0113_android_helloworld09.jpg]]

案内メニュー