ワイヤレスジャパンの Android アプリ開発講座メモ
先週開催されていた ワイヤレスジャパン2010 の Android アプリ開発講座 という有料のプログラムに知り合いが出られなくなったということで代わりに話を聞いてきました。
以下はその知り合いにも見てもらう意味も含めて書いたメモです。
- 開始前に諸注意。録音、録画、Ustream等での動画配信、写真撮影の禁止とのアナウンス。Ustreamって。
アンドロイドアプリのマルチ端末対応 - 画面レイアウト編
- C-LIS の有山 圭二さん
- MoreLocale 2、近藤昭雄シリーズ(憂鬱、退屈)、薬検索とか作っている人
- 発表資料とサンプルコードは http://dev.c-lis.co.jp/20100716-WJ.zip からダウンロード可能
- とりあえずざくっと Android の基本的な説明
- Android の端末はたくさんあるので、一つのバイナリで複数の端末に対応する必要がある
Androidの画面設計
- 画面に表示するテキストとか画像とかの部品はリソースとしてリソースマネージャーが管理する
リソース修飾子はディレクトリに -修飾子 という形で指定する
複数のリソース修飾子を指定することが可能
設定可能なリソース修飾子の一覧は Providing Alternative Resources を参照。
多言語対応の場合は values/strings.xml と values-ja/strings.xml を作成することで実現できる。
言語によって入力フィールドを変えたい場合は layout と layout-ja のような形で実現できる。
→感想: あんまり言語によって入力フィールドを変えるとかはやらない方がいいと思うけど...リソースマネージャーは指定されたリソースIDと環境、設定を元にして最適なリソースを返す処理をする。(なかった場合はデフォルトを返す)
リソース修飾子を使った解像度別の画面設計
解像度の異なる端末への対応は以前は解像度を直接指定してた
layout-480x320: HT-03A
layout-800x480: HTC Desire
layout-854x480: Xperia, IS-01
この指定方法は非推奨で、ドキュメントからも削除された
推奨される画面の指定方法
- スクリーンサイズ(-small/normal/large)
- ピクセル密度(-mdpi(160)/hdpi(240)/ldpi(120))
- アスペクト比(-notlong(4:3)/-long)
- 画面の向き(-port/-land)
これらの組み合わせでも実際の解像度は認識できない→レイアウトの工夫でどうにかする
相対指定
fill_parent: 親要素一杯にする
wrap_content: コンテンツの大きさに合わせる
絶対指定→px は使わない方がいいよ
px: ピクセル指定
dp: ピクセル密度に合わせる
sp: ピクセル密度とフォントサイズに
Style リソースで表示する要素のサイズや色を指定することができる。CSS っぽい感じ
→Style の継承も可能AndroidManifest.xml に対応する画面サイズの指定を書かないとマーケットに出てこないよ
新しい端末に備えて...
- デフォルトのリソースを活用
- SDK ドキュメントのリソースに関する記述(英語だけど)をチェック
アンドロイドアプリのマルチ端末対応 - コード編
最適なロケーション・プロバイダーを選択する
ロケーションプロバイダー: 位置情報を取得する情報元
条件を指定して、最も良いロケーションプロバイダーを取得する
検索条件
Accuracy: 取得する位置情報の精密度(FINE・COARSE)
AltitudeRequired: 高度情報が必要→基地局とかは高度が取れない
BearingRequired: 方向情報が必要
SpeedRequired: スピード情報が必要
CostAllowed: 位置情報の取得に費用がかかるのを認める
PowerRequirement: 消費電力(高・中・低)
縦横切り替えを処理する
- 縦横切替時には一旦 Activity が終了する
- onSaveInstanceState で状態を保存する
- Activity の復帰時に onRestoreInstanceState で保存されたものを取得する
- 縦横切り替えでエラーが出る場合は AndroidManifest.xml に android:configChanges を書くと対処できるけど、あんまりおすすめではない。
様々なテスト環境を作成する
- 仮想デバイス(AVD)でテストする
- いろいろ指定できる
解像度に依存しない画像素材を作る
- Draw 9-patch
- 画像を 3x3 に分割して、拡大したときにきたなくならないようにする
- コンテンツの領域を決めると文字列がきちんと表示される
- Android の SDK に入っている tools/draw9patch.bat を実行する
質疑応答
言語リソースを管理しやすくするツールとか方法があるのか?
→支援するツールは存在しない。言語によって順番が変わる(日付とか)ところとかの置き換えはサポートされている。→男性、女性とかの対応はできないと言われた。Android の開発とマーケットと iPhone の開発との違いは?
→iPhone で開発したことはないので実際のところはわからないGoogle Maps とかが乗っている端末は CTS (Compatibility Test Suite)に規定された試験を通っている
→IS01の右側にメニューが出ているのは CTS を通すために画面サイズを小さくするためとのこと(へー)各OSで書いたときにきちんと動くのか?
→下位互換性はあることになっているが OS 1.5 で書いたは 1.6 で動作しない場合もある。ただその時は CTS がなかった。
感想
- なんとなく、どんな端末でも動作する Android アプリを作るためのポイントはわかった
- そうは言っても、そもそも Android のアプリを作ったことがないので、まずはそこからなかなと...
- Draw 9-patch はなるほどなーといった感じ
デザイナと仕事する方法
- 矢野りんさん
- NTT Docomo Android の Blocco のデザインをやっている
- ペルソナ作り: コンシューマ向けデザイン手法
- ムードボード: こういう人はこういう雰囲気の UI が好きなんじゃないか
- Smartphone の画面だと、画面遷移するよりも縦に長い1画面にまとめるほうがよかったりする
- イメージを表す写真から色を取り出すという手もある
感想
- ペルソナという言葉は初めて聞きました。コンシューマ向けをやるときには試してみようと思った。(やることあるのか?)
内容的には私は無料で聞けたので問題ないですが、22,000円という価格設定は正直ちょっと高いかな感じました。偉そうですいません。
- カテゴリ
-
android
-
- ¦
- 固定リンク
- ¦
- コメント (0)
- ¦
- トラックバック (0)
- トラックバック用URL:
- http://takanory.net/takalog/1238/tbping
鈴木たかのりです。とりあえず日記っぽく雑多なことを書き込んでいこうと思っています。
zope/plone関係の技術的な内容については