デバイスのディスプレイサイズごとにレイアウトファイルを分ける


Android3.2から、レイアウトファイルを格納するディレクトリをデバイスのディスプレイサイズごとに分けることができるようになりました。

詳細は以下から。

Android3.1以前のバージョンでは、画像リソースなどを格納する”/res/drawable”についてはデバイスの解像度別にフォルダを分けれる仕組みが存在しましたが、レイアウトファイルを格納するためのディレクトリである
“res/layout”に関してはディスプレイのサイズや解像度ごとにフォルダを分ける仕組みが存在しませんでした。

そのため、開発者はデバイスの解像度が異なってもレイアウトが崩れないようにするために非常に苦労させられていました。

しかし、Android3.2からはディスプレイのサイズごとにレイアウトファイルを格納するディレクトリを分割できる仕組みが搭載されました。

追加されたディレクトリと各ディレクトリの分割単位を以下の表に記述します。

res/layout-sw600dp/ 7インチディスプレイを搭載しているタブレットに適用されます
res/layout-sw720dp/ 10インチディスプレイを搭載しているタブレットに適用されます
res/layout-w600dp/ developerサイトには十分な領域があった場合にマルチペイン用として
適用される記述がありますが詳細不明です
res/layout-sw600dp-w720dp/ 7インチ以上のディスプレイに対して適用されます。

また、上記表での7インチとはwidth解像度が480dp以上600dp未満、10インチとはwidth解像度が600以上720dp未満
と定義されています。

さらに、この新しいディレクトリは下記画像のように、Android3.1以前のAPIでビルドする場合もきちんとビルドが通るようになっています。

※あくまでもビルドが通るだけであり、Android3.2以上のデバイス上で動作させない限りはディレクトリの
分割は有効になりません。

関連する記事: