Developer's Blog

android 開発におけるリソース管理 〜ディレクトリ名の規則について〜

はじめまして。共同開発部で開発者をしています森河内です。
私自身、今までは iOS を中心に開発を行ってきたのですが、まだまだ手伝い程度ですが最近 Android アプリの開発も始めました。まだまだ、わからない事も多いのですが、折角 Android 開発を始めたので、 Android ネタでこのブログを書いてみたいと思います。

Android には iOS とは違い様々な端末が存在します。また、Android 端末は世界中で使われていますので、Android 開発を行っていると多言語対応もしたいことが多いと思います。Android では以下の画像のように解像度の違う端末や多言語に対応するにはリソースディレクトリ内の drawable ディレクトリや layout ディレクトリ名の後に修飾子をつける事で対応する事が出来ます。修飾子の付け方は、各ディレクトリ名の後に「 – ( ハイフン ) 」をつけてその後に値を入れると実現できます。全てをあげるときりがないので代表的なものを紹介したいと思います。

多言語に対応する場合

まず、多言語に対応する場合です。 ISO 639.2 で提供されている文字コードをつけるとその言語に対応する事が出来ます。


英語 : drawable-en  layout-en  values-en
日本語 : drawable-jp  layout-jp  values-jp

画面の向きに対応する場合

縦画面の時と横画面のときでレイアウトを変えたいときもあると思います。そんなときは以下のように設定し、設定したディレクトリ内にレイアウトファイルを入れると対応することが出来ます。

縦画面時 :  drawable-port  layout-port  values-port
横画面時 :  drawable-land  layout-land  values-land

画面のピクセル密度の違いに対応する場合

Android は端末によって1インチ内のピクセル密度が異なります。ピクセル密度によって画像リソースを分ける事で各ピクセル密度に対応した画面を作る事が出来ます。


中密度 ( mdpi ) : drawable-mdpi  layout-mdpi  values-mdpi
高密度 ( hdpi ) : drawable-hdpi  layout-hdpi  values-hdpi
超高密度 ( xhdpi ) : drawable-xhdpi  layout-xhdpi  values-xhdpi
密度によらない ( nodpi ) : drawable-nodpi  layout-nodpi  values-nodpi

余談ですが、日本で販売されている多くの Android 端末は hdpi というピクセル密度になります。hdpi でも高密度なのですが、日本ではこれよりも高密度な端末があります。それは、au から出ている IS03 です。IS03 は、xhdpi という hdpi よりも高密度な画面です。xhdpi に対応しようとするとそのために画像を用意したり、レイアウトを調整したりする必要があります。

修飾子を複数つける

上記で紹介した修飾子を縦画面で高密度などと複数使いたいときがあると思います。そういうときは、以下の例のように続けて書く事で複数つける事が出来ます。


縦画面で高密度 : drawable-port-hdpi  layout-port-hdpi  values-port-hdpi
日本語で横画面の中密度 : drawable-jp-land-mdpi  layout-jp-land-mdpi  values-jp-land-mdpi

ただし、複数連ねる場合は注意しないといけない事があります。それは、修飾子をつける順番です。順番は下記のリンク先にある「 Table 2. Configuration qualifier names. 」の上から順番に書く必要があります。
http://developer.android.com/guide/topics/resources/providing-resources.html

Copyright © 2019 Fenrir Inc. All rights reserved.