Android/javadrive_android

Last-modified: 2010-10-08 (金) 18:30:57

記号

Android Debug Brige(ADB) 

 http://www.taosoftware.co.jp/blog/2008/10/android_adb.html
 コマンドラインから実機やエミュレータの状態管理するソフト
 ・adb shellでshellを起動可能
 ・/dataディレクトリの書き込み可能
 ・ls cd psなどのコマンド使用可能
 sqlite3コマンドを用いたDB操作などが可能
 ただ、ディレクトリの書き込みやcdなどはDDMSのほうが便利。
 (DDMSはeclipseかコマンドラインから使用可能)

ArrayAdapterクラス

ArrayAdapterクラスはデータの一覧を
 他のビューに渡すために使用されるクラス

DDMS

  • DDMSというデバッガがあり、コマンドラインか、eclipseから起動が可能。
     ログを表示する機能があり、さらに各種フィルタで表示するログの内容を
     取捨選択できる
  • DDMSには画面キャプチャなどの機能もついている
  • eclipseから動作する仮想デバイス(エミュレータなど)を選択するには、
     実行⇒実行構成からターゲットを選択して変更する

SQLite

  • SQLiteは1つ1つのデータベースを1つのファイルで管理するデータベース。
     アプリケーションでデータベースを作成すると、
     データベースが格納されるファイルが1つ作成される。

 配置場所は以下の個所
 /data/data/(package_name)/databases

  • データベースには(決まりではないだろうが).dbを付けることが多い
  • プログラム中からデータベースを作成する場合は、
     ApplicationContextクラスのcreateDatabaseメソッドを用いる
     …とあるが、createDatabaseがパッケージ内および、APIリファレンスから発見できず。
     ⇒android.content.Contextにあるはずが存在せず。仕様の変更か?
     ⇒その他、openDatabaseも存在しない。execSQLは存在するようだ。
     ※http://sites.google.com/site/tuyano/java/android/08で示されている
      SQLの操作方法は成功している。こちらを用いるとよい
  • DBへのデータの追加には、execSQLを使って直接SQL文を書くほか、
     ContentValuesクラスのputコマンドを使う方法がある。
     その他、removeやclear(全消去), update(データの変更),
     contaisKeyなどSQL操作用のAPIが存在する

アクティビティ

  • アクティビティは複数登録可能
     リソースのXMLファイルの<activity>タグで追加ができ、
     <intent-filter>を含んでいる<activity>が起動時に呼ばれる
     明日(8/31)、調査予定だが、アクティビティは切り替えて使用可能

アノテーション

  • @Override
     これは、アノテーションと呼ばれるもの。
     アノテーションとは注釈という意味。
     AndroidというよりはJavaで用意されている機能で「@Override」を付けた
     メソッドはオーバーライドされたメソッドであることを宣言している。
     オーバーライドではないメソッドにこのアノテーションを付けると
     エラーとなるので、オーバーライドされたメソッドであることが明確に
     なるのと同時にメソッド名の単純な打ち間違いを防止するメリットもある。
     書くことは必須ではないが、明示できることから書くとよい。

イベント用インターフェースの実装方法

  • イベント用のインターフェースを実装する方法は大きく分けて2つある
     匿名クラスを使う方法とインターフェースを使う方法
     匿名クラスを使用した場合は、ボタンごとに処理内容を記述する必要がある。

 インタフェースを用いた場合は、onClickメソッド内でオブジェクトを
 if文で場合分けして処理を行う。

 ※Javaの無名クラスは匿名クラスとも呼ばれている。宣言と同時に中身を記述しているもの。

インテント

インテントに関しては、現時点で、このサイトでは、詳しく述べられていない。
他サイトで要チェックか?

  • インテントとは
     アクティビティなどが他のアクティビティや
     アプリケーションなどと情報のやり取りを行うための箱のようなもの。
     インテントという箱には、相手先や届けたい情報などが含まれている。
  • 明示的インテント
     送付先が決まっている場合を明示的インテントというが、
     送付先を決めずにインテイントを送ることもある。
     おもに以下のコンストラクタを用いる
     Intent(String action, Uri uri, Context packageContext, Class<?> cls)
  • 暗黙的インテント
     アクティビティなどはインテントフィルタと呼ばれる仕組みを使って
     どのようなインテントを受け取るのかを設定しています。
     送付先が決まっていない場合は、システム側が条件に合う全ての
     アクティビティに対してインテントを送付します。
     おもに以下のコンストラクタを用いる
     ・Intent(String action, Uri uri)
     ・Intent(Context packageContext, Class<?> cls)

ビュー関連

  • EditTextで文字が入力範囲を超過した場合、幅が自動で調整されるが、
     あらかじめ幅を設定しておくと、幅が優先されて縦方向に延ばされる
  • Galleryというのは、回転するエディットボックスで
     隣の要素の一部が見えているもの。実機の矢印で操作する
  • ImageButtonクラスを使うと、画像が表示されたボタンを扱うことができる
  • LinearLayoutクラスは縦又は横方向にビューを配置していくレイアウト
     ビューを追加する際、addViewを使う。
     このaddViewは追加した順で配置されるが、
     addViewの第2引数にindexを入れると、
     後から追加した場合でも間に追加するなどが可能
     また、addViewメソッドを使ってビューを追加していくとデフォルトでは
     水平方向に配置されるが、
     setOrientationメソッドを使うと、縦方向に配置することも可能
  • LinearLayoutもViewクラスのサブクラスなので、
     LinearLayoutクラスのオブジェクトも
     他のLinearLayoutクラスのオブジェクトに子ビューとして追加可能
  • RelativeLayoutは他のビューとの位置関係を決めることで位置を
     決定するレイアウト。
     位置を指定しないと全部左上に表示されてしまう
     指定するときは、addRuleメソッドでPOSITION_TO_RIGHTなどを指定して使う
  • Spinnerというのは、エディットボックスの右端に左右の矢印がついているもの

ビューの作り方

  • ビューをレイアウトするには、ビューグループというのを作り、
     その中にビューを追加していく必要がある
  • プログラムからビューを作成する方法と、
     リソースとしてXML形式にビューを定義しておく方法がある

プログラムからビューを定義する

 プログラムの中でビューを作成してアクティビティに追加する場合、
 プログラムの実行時に条件に応じてビューを追加するといったことが可能。
 その代わり初期画面のようなものをプログラムの中で全て記述すると
 ビューの定義などでプログラムが長くなってしまうというデメリットもある。

リソースのXMLファイルからビューを定義する

 XMLファイルを使って画面のレイアウトを行う場合、
 プログラムの中にはビューの設定や配置方法などを記述する必要はないため
 プログラムはすっきりとさせることが可能。
 ただし、プログラムの実行前にXMLファイルは作成しておく必要があるので
 プログラムの実行中にビューを追加したりする場合にはこの方式は使用できない。

  • 最新のアンドロイドのバージョンでは、リソースのフォルダが、
     「res/drawable-hdpi」、「res/drawable-ldpi」のように分かれており、
     同じ名前でリソースを登録しておけば、端末の解像度に応じて
     自動で切り替えてリソースが使用される仕組みになっている。
  • eclipseにリソースを追加してビルドすると、自動でリソースのIDが振られる
  • Resources res = getResources();
     int msg_color = res.getColor(R.color.textcolor);
     のようにして、引数にリソースIDを指定すると、対応するリソースを取得可能
     (xmlに記述したデータを取得することが可能)
  • 文字列リソースの場合は
     String titleString = getString(R.string.title);
     のようにandroid.content.Contextクラスで定義されているメソッドでの
     取得も可能。