読んだ: Android Layout Cookbook アプリの価値を高める開発テクニック / あんざいゆき 著
Android アプリのレイアウトのいじり方などが書かれた本 『Android Layout Cookbook アプリの価値を高める開発テクニック』 を読みました。 著者は、ブログ 「Y.A.M の 雑記帳」 のあんざいゆきさん。 Android 開発をしている人なら結構お世話になってるブログじゃないでしょうか。
Android Layout Cookbook アプリの価値を高める開発テクニック
- 作者: あんざいゆき
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/03/11
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 147回
- この商品を含むブログ (33件) を見る
約 3 年前 (2011 年 3 月) に発売されたものなので内容はやや古くなっていますが、学びもあったので感想やこの本で初めて知ったことなど書き残しておきます。
全体的なレビューや感想
前書きには次のように書かれています。
本書では前半でデフォルトの UI (ユーザーインタフェース) をカスタマイズする方法を紹介し、後半ではユーザービリティを改善するための具体的なチップスを紹介します。 各チップスは独立しているため、目次から求める内容の部分のみを読むことも可能ですし、全体を通して読むことでアプリのデザインや機能を改良するためのさまざまなヒントが手に入ります。
特に、さまざまな解像度やハードウェアが存在する Android 端末では必須なマルチデバイス対応について、レイアウト方法のコツから機能デザインまで詳しく紹介しました。
タイトルに 「Layout Cookbook」 と含まれていることからもわかりますし、前書きにも書かれていることですが、主に Android のレイアウトや UI について書かれています。 既に Android アプリ開発の基礎はわかっているけど、見た目のカスタマイズについては詳しくない、という人向けです。
Android アプリの UI に対して、どういうカスタマイズができるのか、どう記述すればカスタマイズできるのか、ということがわかりやすく書かれていて、良い本だと思います。 サンプルコードやスクリーンショットが豊富にあるのも理解しやすい一因です。
ただし、SDK 2.3 時代のものなので、Action Bar や Fragment といった最新の Android アプリ開発で使われている部品についての説明がない *1 など、内容的に古めであるというのは否めません。 読むのであればそういう点 (内容が古めということ) に注意が必要です。
本書を読んで初めて知ったこと
私が本書を読んで初めて知ったことをまとめておきます。
Draw 9-patch ツールを使って NinePatch
画像を作成できる
- Draw 9-patch ツールについて: Draw 9-patch | Android Developers
- Nine-patch について: Canvas and Drawables | Android Developers
例えばボタンの背景に使用される画像だと、ボタンサイズによって全体の大きさを変化させたいけど、四隅の部分は拡大縮小されないようにしたい、ということがままある。 画像全体に合わせて拡大縮小する領域と拡大縮小しない領域が指定されたビットマップ画像として、Nine-Patch 画像というものがある。
Draw 9-patch ツールを使えば、そのような Nine-Patch 画像を WYSIWYG エディタで作成できる。
Toast#setView
メソッドで Toast にビューを設定できる
Toast#setView
メソッド で View
を設定できる。 文字列しか設定できないと思ってた。
AbsListView
の android:cacheColorHint
属性
When set to a non-zero value, the cache color hint indicates that this list is always drawn on top of a solid, single-color, opaque background. Zero means that what's behind this object is translucent (non solid) or is not made of a single color.
AbsListView | Android Developers
ListView
が、不透明で単一の色の上に描画される場合は、この属性にその色を設定すればリストの表示の最適化に使われるらしい。 不透明でなかったり、単一の色でない場合にはゼロ (XML の属性で設定する場合は @null
かな?) を指定すれば良い模様。
ドキュメントにはデフォルト値への言及がないけど、機種によって (?) はデフォルト値が黒色になっているみたいで、ListView
のスクロール時に黒色がちらついたりすることがあるみたいなので、この属性を明示的に設定する必要があるみたい。
AbsListView
の listSelector
を項目の前面に表示させることができる
ListView
の項目の選択状態を表すための Drawable を android:listSelector
で指定できるわけだけど、デフォルトではこの Drawable は項目の背面に表示される。 なので、項目全体に画像を表示している場合などは変化が見えない。
android:drawSelectorOnTop
を true
にすると、項目の前面に表示されるようになる。
View Holder に View を保持させて View 取得処理を何度も行わないようにする
ListView
のスクロールに応じて findViewById
メソッド で同じ View を取得する処理が何度も実行されるということが多いが、その場合は View Holder (View を保持するクラス) を自分で定義して、そこに View を保持するようにすればいい。
View Holder のオブジェクトは View#setTag
メソッド で View
に持たせておけばよい。
android:autoLink
属性で TextView
中の URL をリンクにする
android:autoLink
属性を使って、TextView
中の URL をリンクにすることができる。 また、HTML を元に TextView
の中にリンクを表示させることもできる。
Quick Actions UI パターン
2010 年の Google I/O で紹介されたデザインパターンとして、Quick Actions パターンというものがあるらしい。 ボタンクリック時などにポップアップの中に実行できるアクションを複数表示して、ユーザーに選択させるというもの。 あんまり見かけない気はする。
独自フォントを使用する
assets にフォントファイルを入れておいて、TextView#setTypeface
メソッド でそのフォントを指定する、ということができる。
Activity が処理できる configuration の変更を指定する
端末の向きなどの configuration が変化した場合、デフォルトでは Activity が一度破棄されて再度生成されるが、Activity 自身が configuration の変化を処理することもできる。 Activity が処理する configuration は AndroidManifest.xml の activity
要素の android:configChanges
属性に記述しておく。
おわり
内容が古くはありましたが、勉強になる部分もあったので読んで良かったです。
あんざいゆきさんの著書で Android 4.0 対応の UI Cookbook も発売されていますので、今から購入するのであればこちらの方が良さそうではあります。 (内容を見てないのでわかりませんが。 Amazon.co.jp のレビューによると 『Android Layout Cookbook』 よりも質が落ちている、という意見もあるようですね。)
Android UI Cookbook for 4.0 ICS(Ice Cream Sandwich)アプリ開発術
- 作者: あんざいゆき
- 出版社/メーカー: インプレスジャパン
- 発売日: 2012/03/16
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 47回
- この商品を含むブログ (18件) を見る
Kindle 版も発売されています。
Android Layout Cookbook アプリの価値を高める開発テクニック
- 作者: あんざいゆき
- 出版社/メーカー: インプレスジャパン
- 発売日: 2012/11/15
- メディア: Kindle版
- この商品を含むブログを見る
Android UI Cookbook for 4.0 ICS(Ice Cream Sandwich)アプリ開発術
- 作者: あんざいゆき
- 出版社/メーカー: インプレスジャパン
- 発売日: 2012/11/28
- メディア: Kindle版
- この商品を含むブログを見る
*1:Action Bar については、レイアウトパターンとしての Action Bar への言及はあります