世界を目指せ!Androidアプリ開発入門

IDEEclipse 3.7

 状態:終了  閲覧数:7,301  投稿日:2012-01-23  更新日:2013-03-20
環境構築


履歴


・2012-1-19 … 開始
・2012-1-30 … 挫折


第3回 Android SDKでサンプルアプリを使ってみる
サンプルアプリをビルド
・サンプルアプリのプロジェクト(既存のプロジェクト)を開くには,[ファイル]メニューの[新規]-[その他]を選択
・[新規]ダイアログが表示されたら[ウィザード]の[Android]を展開し,中から[Android Project]を選択して[次へ]をクリック
・「外部ソースからプロジェクトを生成」。参照ボタンをクリックして、「ロケーション」D:\Android\android-sdk\samples\android-7\SkeletonApp。
・最後に[Build Target]を設定。すでに[Android 2.1]が選択されているかもしれないが,選択されてなければ,前回作成したエミュレータに合わせて[Android 2.1]を選択
・そのまま完了をクリック
・すると,Eclipseの[パッケージ・エクスプローラー]に,先で開いた「SkeletonActivity」が表示されて,ビルドが実行されている。Eclipseの環境構築に問題がなければ,ビルドが終了して,アプリが実行できる状態になっている

エミュレータでアプリを動かす … ビルドしたアプリをエミュレータで実行
・パッケージ・エクスプローラーから「SkeletonActivity」を選択して,[実行]メニューの[実行]を選択。[次を実行]ダイアログが表示されるので,一覧から[Android Application]を選択して[OK]をクリック。
・しばらくすると,エミュレータが起動
・初回の起動はAndroid OSの起動に時間がかかるが,OSが起動した後にビルドしたSkeleton Appが立ち上がるので,辛抱強くまつ。Skeleton Appが起動したら,マウスを使って[Clear]ボタンを押す等して,アプリの操作を行い,上手く動作することを確認
・具体的には、下の矢印をクリックしたら、アイコン画面が出るから、それで、スケルトンアプリアイコンをクリックすればいい
・一通り触ってみて、問題なさそう
・まあ、中身が何もないスケルトンアプリだからね

実機で動かしてみる
・実機ないので、試せない。ここはふーん、って感じで読んだだけ

エミュレータと実機の違い
・ユーザインタフェース
・速度

・第3回は、すぐに終わった
・実機の部分を実際に試してないから、内容的には4割ぐらいか

第4回 Androidの肝,アクティビティ … サンプルアプリの動作確認

 閲覧数:492 投稿日:2012-01-23 更新日:2013-02-08
アクティビティ
・Androidの画面に相当し,ユーザが操作する画面と操作に対する処理を行う
・画面を持つアプリは,必ずアクティビティを持つ

同じ画面に相当するウィンドウとの違い
・状況に応じて分岐する遷移状態を持つ
・インスタンスの保存・復帰する仕組みを持つ
・Android OSのタイミングで,強制終了・再起動される

サンプルアプリを修正
・アクティビティの動きを確認するために,Dalvik Debug Monitor(以下,ddms)を利用
・ddmsは,SDKフォルダ以下のToolsフォルダに収録されているので,ダブルクリックで起動(Windowsは,ddms.bat)
▼D:/Android/android-sdk/tools/ddms.bat

ddms
・名前の通りアプリのデバッグに活用できる
・ソースコードに,以下のコードを追加すると,ddmsのログウィンドウにデバッグメッセージを表示
Log.d( "SkeletonActivity", "onPause" );

Eclipseを起動して,パッケージエクスプローラーのSkeletonActivityからSkeletonActivity.javaを選択して,コード修正
//Logクラスをインポートしないとエラーとなるので,以下のクラスをインポート
import android.util.Log;

@Override
protected void onResume() {
  super.onResume();
Log.d( "SkeletonActivity", "onResume" );//ddmsのログウィンドウにデバッグメッセージを表示
}

@Override
protected void onPause() {
  super.onPause();
Log.d( "SkeletonActivity", "onPause" );//ddmsのログウィンドウにデバッグメッセージを表示
}

起動
・パッケージ・エクスプローラーから「SkeletonActivity」を選択して,[実行]メニューの[実行]を選択
・[次を実行]ダイアログが表示されるので,一覧から[Android Application]を選択して[OK]をクリック

エラー
・contains error(s)と表示されたら、コードに誤りがある
・修正後、再度実行

ddmで確認
・「onResume」と「onPause」が、右下ウインドウに表示されることを確認

ddmメッセージをフィルター
・SkeletonActivityが出力したメッセージを探すのが面倒なので,メッセージをフィルターする機能を使って,表示メッセージを絞り込む
・フィルターの追加は,画面左下ログペインの「+」をクリック
・[by Log Tag]には,コードで指定したTagを指定する
・ここでは、連載通り、「Filter Name」と[by Log Tag]に「SkeletonActivity」と入力

ddmsを使って動きを確認
・「onResume」…「SkeletonAPP」が最前面に表示されている状態
・「onPause」…「SkeletonAPP」が最前面に表示されていない(裏に回っている)状態。最前面にはメニューなど別の画面が表示されている状態
・実際にエミュレーターを動かしながら、ddmメッセージが、「onResume」から「onPause」等へ切り替わるタイミングを確認していく
※アクティビティが裏にあり「onPause」の状態で,他のアプリから大量のメモリが要求されると,Android OSが背面のアクティビティを強制終了する可能性がある。強制終了したアクティビティが復帰の時は「onResume」からではなく「onCreate」からとなり,一から起動された場合と同じ遷移になる。これは,アプリを開発するうえでは,大きなポイントになる

リソース管理のコツは?
アプリによって,リソース管理方法は異なる
<例>
・1画面,1アクティビティとする
・強制終了される前提でリソースを扱う
・アクティビティを跨いでリソースを使用しない

第5回 アクティビティの制御と明示的インテント

 閲覧数:474 投稿日:2012-01-25 更新日:2013-02-12
主画面から副画面へ遷移するアプリ
・副画面の準備
・ソースコードの準備
・AndroidMnifiest.xmlへの準備
・動作テスト

副画面の準備
・Androidの画面は,XMLで表現されているのでテキストエディタでも記述できるが,今回はEclipseに内蔵されているリソースエディタを利用
・[ファイル]メニュー[新規]の[その他]を選択
・新規ダイアログが表示されたら[Android]から[Android XML File]を選択して,[次へ]をクリック

ダイアログ画面
・ファイル欄に、skeleton_sub_activity.xmlと入力
・ルート欄が「LinearLayout」を選択していることを確認

次の画面
・Size Normal
・Raito NotLong
・Orientation Portrait
・Density MediumDensity
・TouchScreen Finger
・Keyboard Soft
・TextInput Qwerty
・Navigation Method Trackball
・Dimension 480×320

・アウトラインパネルに[LinearLayout]が表示された!

アウトラインパネルの[LinearLayout]を選択して,プロパティパネルの[Orientation]を[vertical]に設定します。次に,コントロールを配置して行きます
[Views]から[EditText]を選択して,
が分かんない。どこにあるの?

ドラッグしてビューに配置します。同じく[Button]を選択して,ドラッグしてビューに配置します。
とりあえず、適当に配置して先へ進む

・[SkeletonSubActivity]を選択して[OK]クリック
・[OK]がどこにあるか分からず、ctrl+s

2時間ぐらい経過後、ようやく原因らしき箇所を発見。
パッケージの「res」フォルダ以下に「layout-normal-notlong-port-mdpi-stylus-keyssoft-qwerty-trackball-480x320」がフォルダ作成され「skeleton_sub_activity.xml」が格納されます
の次。
「skeleton_sub_activity.xml」を「layout」フォルダへドラッグで移動して「layout-normal-notlong-port-mdpi-stylus-keyssoft-qwerty-trackball-480x320」フォルダは削除します
この手順を飛ばしてた。
日本語も満足に読めないのか、オレは…。

ドラッグしたら、強制終了せず、副画面へ遷移するようになった。
(副画面から主画面へは、何故か戻れないけど…)


副画面から主画面へ戻らなかった件。
副画面に遷移したら,エミュレータのバックキーを押してください。起動時の主画面に戻るはずです
試したら、ちゃんと画面遷移した。
どうやら、これで正常な状態らしい。
<動作テスト>
無事終了

主画面から副画面へ遷移する際,データの引き渡しを実施
・インテントには,追加データを持たせることができるので,その仕組みを使って,主画面から副画面へ移動する際に,テキストを引き渡して,副画面のテキスト入力エリアへ表示を行う
・データ送信側…主画面…SkeletonActivity.java
・データ受信側…副画面…SkeletonSubActivity.java
・データを送信するタイミング…主画面のバックボタンをクリック

まずは,SkeletonActivity.javaのバックボタンが押された際のコードに,追加のデータを引き渡すコードを追加。
第1引数がキーで,インテントが保持している追加データにアクセスするために使います。第2引数は,追加データになり,今回のケースはテキストです
//Intentクラスのintentインスタンスオブジェクトを生成
Intent intent = new Intent( SkeletonActivity.this, SkeletonSubActivity.class );
intent.putExtra( "INTENT_PARAM", "TEST" );//第1引数…キー、第2引数…追加データ

Add extended data to the intent. The name must include a package prefix, for example the app com.android.contacts would use names like "com.android.contacts.ShowAll".
インテントに拡張データを追加。名前は、たとえば、the app com.android.contactsは"com.android.contacts.ShowAll"のような名前を使用する場合、パッケージの接頭辞を含める必要があります。


Parameters
name The name of the extra data, with package prefix.
value The String data value.

Returns
Returns the same Intent object, for chaining multiple calls into a single statement.

パラメータ
パッケージの接頭辞を伴う、拡張データの名前
文字列のデータ値

戻り値
単一のステートメントに連鎖複数の呼び出しのために、同じインテントオブジェクトを返す


◆putExtra … Intentクラスのメソッド。役割→インテントに拡張データを追加。第1引数→インテントが保持している追加データにアクセスするためのキー。第2引数…追加するデータ


if文のelseの後str = "";の前後に{ }が抜けてます
SkeletonSubActivity.javaに追加

この状態で実行しようとするも、起動せず。
R.id.EditText01
はデフォルトでセットされる
R.id.editText1
にした方がいいです
SkeletonSubActivity.javaを編集
// 編集エリアに追加データを表示する。
EditText edit = (EditText)findViewById( R.id.EditText01 );
   ↓
EditText edit = (EditText)findViewById( R.id.editText1 );

・この状態で、実行すると、無事起動し、主画面のバックボタンをクリックすると、副画面へ遷移し、なおかつ、これまで空欄だったテキストエリアに、渡したデータ「TEXT」が表示されるようになった
・だけど、何で、EditText01じゃあ、動かなかったんだろう?
・それに、editText1って、どこから来たのだろう

・秀丸でファイルを開く
・「右クリック」-「アプリケーションから開く」-「その他」―「参照」
・「SkeletonActivity/res/layout/skeleton_sub_activity.xml」を、秀丸で開いてようやく分かった
editText1って、
<EditText
android:id="@+id/editText1"から来ているみたい。

それにしても、eclipseで、xmlファイルの色分けが、なんでされないの?
設定が分からねー。

Androidの画面は,XMLで表現されているのでテキストエディタでも記述できますが,今回はEclipseに内蔵されているリソースエディタを使います
って書かれてるけど、「Eclipseに内蔵されているリソースエディタ」って。いわゆるGUIのことかしら?

本体っていうか、画面設定は、
/SkeletonActivity/res/layout/skeleton_activity.xml
/SkeletonActivity/res/layout/skeleton_sub_activity.xml
なわけね。
いわゆる、テンプレートとか、レイアウトファイルってことかしら?

ビューの[Orientation]を[vertical]に設定しているので,それぞれのオブジェクトが縦に並ぶはずです
▼/SkeletonActivity/res/layout/skeleton_sub_activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >


リファレンスは日本語に訳されてないっぽい。
LinearLayout | Android Developers


■Activityクラス … 画面作成
■LinearLayoutクラス … 縦又は横方向にビューを配置していくレイアウト


色々調べている内、どうももっと基本的なところから、
やらないとワケわかんないことに気が付いた。
それこそ、画面遷移より、まずは、Hello Worldからでしょうよ。

ということで、ここからは予定を変更して、
このチュートリアルをやっていくことにする。
Android入門

ちなみに、「LinearLayout」表示部分については、良さ気なサイトがあったので、メモ。
LinearLayoutとRelativeLayoutの使い方をまとめてみた - プログラミング雑記


・続きはこちら


「Eclipse 3.7」「Pleiades」… 開発環境構築1回目

Android入門



週間人気ページランキング / 4-29 → 5-5
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2024/5/6 1:01 更新