プログラマってこんなかんじ??

アプリ作ったり歌ったりしてます

Android UI Cookbook for 4.0 輪講会 vol.1

Androidの会福岡支部メンバー数人で輪講会をはじめました。

今回のお題は通称 yanzm本2 と言われている、
Android UI Cookbook for 4.0 ICSアプリ開発術 です。

f:id:dai4649:20120326215613j:image

実はちょっと前に Effective Java 第2版輪講をやってみたのですが、
それがまたなかなかおもしろくて。

  • 「人に伝えること」を前提にして熟読+理解
  • 実際に説明
  • 議論

をするとこれがまた異常に充実感があるというか。
みんなでやいやい言いながら興味のあることを勉強するのはやっぱり楽しいですね。
「おい、勉強くらい本読んで1人でやれよ」と言われたらそれまでなんだけどもw


というわけで、こんな感じで輪講会を進めてます。

進め方

  • 各自予習必須
  • 説明担当の人が本を音読しながら説明
  • サンプルアプリ動かしながら内容確認
  • 説明してるときに気になった点、疑問点などを皆で議論
  • 次回どこまでやるか+次回の説明担当決め(説明担当は毎回ローテーション)

第1回(2012/3/26)

メンバー

  • @yuuto
  • @shikajiro
  • @kenz_firespeed
  • @gatpai
  • 自分


それでは、議論や話題になった点をずらずらと列挙してみます。


1.1.1 UI上のバー

  • なんで [履歴ボタン] がわざわざ新規追加されたん?
  • 今まで通り [HOME]長押し でいいんじゃね?
    • 「長押しをやめる」というGoogle側の方針?
  • [メニュー用コントロール] って押しにくい。なんで右下?右上?
    • 謎。

1.1.2 システムUIの状態

  • ↓の使い分けは?
    • SYSTEM_UI_FLAG_LOW_PROFILE(システムナビゲーションバー控えめ)
    • SYSTEM_UI_FLAG_HIDE_NAVIGATION(システムナビゲーション非表示)
  • 画面タッチしたときに画面伸縮が気になるか気にならないかがポイント?
    • 例えば「頻繁に画面タッチするようなアプリ(ゲームとか)」は 前者 の設定よね。
    • 前者だと システムナビバー領域は常に固定なので画面伸縮は発生しない。
    • 後者だと システムナビバー領域が表示/非表示切替される(画面伸縮)。
  • 電子書籍リーダとか動画プレイヤーは前者推奨されているが、後者もあり??
    • 「なるべく大画面で見たい」という欲求もあるし。
    • ページめくり、早送り等の操作したいときだけナビバー領域動的表示。

コラム Activityの再生成抑止(android:configChanges)

  • そういえば orientation、screenSize 以外にも keyboard、keyboardHidden、fontScale な属性あるよね。
  • ガラスマはパカパカだったりスライダーだったりで、Activity再生成イベントいろいろ飛んでくるよね。

1.2.1 48dp単位のレイアウト

  • 「48dp=約9mm」 って 某iOSアプリのガイドラインで見たことあるねw
  • エレメント間隔は 「4dp もしくは 8dp単位」 が推奨(48dpの約数なので統一感出る)

1.2.2 タイポグラフィ

  • テキストサイズに 「sp指定」 ってICS以前からできなかったっけ?
  • テキストサイズ=10sp は 10dpにシステム全体のテキスト拡大率を掛けた大きさ

1.3.1 Device.Defaultテーマ

  • Theme.DeviceDefault は各メーカがシステムdefaultとしてカスタマイズしてるテーマ。
  • ICSデフォルトを使いたいなら 「Theme.Holo」 を明示的に指定しよう。
  • 指定しとかないと端末ごとに微妙に色見が異なる、などが起こる可能性も。

1.4.1 GridLayoutとSpace

  • GridLayoutはtableタグのようなレイアウト向け
  • table構造を LinearLayout の入れ子で作るくらいならこっちを使おう
  • view階層が浅くなるのでパフォーマンスよくなるはず
  • ただし、静的レイアウト向け
  • 子view幅高さ、要素数が動的に変わるようなレイアウトだと普通のViewGroup系よりコストかかる

1.5 ハンドセット/タブレット両対応

  • supports-screensタグ
    • Market上で画面サイズごとにDL可否フィルタリングできたり。
    • あくまで Marketでのフィルタリング用(Market介さない野良apkだと普通に実行可能)

1.6 Multi-paneレイアウト

  • 縦横切替したときの見え方に注意
    • 縦表示時に2つのパネル表示してたら、横にしても2つのままにする
    • このとき、縦/横で各パネルの幅を変更して見え方を調整

1.7 スワイプビュー

  • リスト画面(10件)から開いた詳細画面(要素1)でスワイプすると次の詳細画面(要素2)を表示するとか


とりあえず今回はここまで。


あとは、ABC2012Spring に参加した 支部長(@yuuto) からABC総括とか。
@yanzmさん のustとスライドって公開されないのかなー。
行けなかったのが悔やまれる。。


というわけで、参加メンバーの皆様お疲れ様でした。


次回は 第2章フラグメント。アツい。
今度は自分が説明担当なので予習頑張ります。