異なる環境への最適化
より多くの利用者を集めるためには、異なる言語、画面サイズや解像度、Androidバージョンに合わせアプリを最適化させる必要がある。
言語
/res/values ディレクトリの後ろにハイフンとISO国コードを付け、各国語ごとのファイルを作成する
例
例
- values デフォルト
- values-jp 日本語
- values-cn 中国語
端末に設定された言語に適合するディレクトリがあればそれを、なければデフォルトのディレクトリが使用される。
画面サイズ(または方向)
/res/layout ディレクトリの後ろに、ハイフンで区切り画面サイズや方向を表す文字を付加し、画面サイズや方向ごとにレイアウトを作成する。
small | 小さい | land | landscape | |
normal | 普通(デフォルト) | port | portrait(デフォルト) | |
large | 大きい | |||
xlarge | もっと大きい |
例
- layout デフォルトサイズのportrait
- layout-large 大きめサイズのportrait
- layout-land デフォルトサイズのlandscape
- layout-large-land 大きめサイズのlandscape
解像度
/res/drawable ディレクトリの後ろに、ハイフンと解像度を表す文字を付加し、画面解像度ごとに画像ファイルを作成する。
同インチでのドット数の倍率は次の通り
xhdpi | 2.0(細かい) |
hdpi | 1.5 |
mdpi | 1.0(基準) |
ldpi | 0.75(荒い) |
xhdpi に表示された 200×200ドットの画像は mdpi に表示された 100×100ドットの画像と、実サイズがほぼ同じになる。
バージョン
Javaコード中で、バージョンを評価しサポートしていないバージョンでの動作を抑止する必要がある。
XMLファイルでは、端末のAPIがサポートしていない要素は無視されるため、特にバージョンごとに記載を変える必要はない。
XMLファイルでは、端末のAPIがサポートしていない要素は無視されるため、特にバージョンごとに記載を変える必要はない。
if( Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO ) { // .... }
ただし、Build.VERSION.SDK_INT 自体はAPI Level 4からの実装。
スタイル
端末バージョンごとに使えるスタイルが違う。
values ディレクトリの後ろに ハイフンとv+レベル数を付加してディレクトリ分けする。
values ディレクトリの後ろに ハイフンとv+レベル数を付加してディレクトリ分けする。
(未確認)こんな構成が考えられるが、これが有効で正しい構成なのか動作未検証
- values
- string.xml
- style.xml
- values-v14
- style.xml
- values-jp
- string.xml
- values-cn
- string.xml