Android

[Android] リソースフォルダの修飾子

投稿日:

はじめに

Androidアプリではリソースフォルダ名に修飾子をつけることによって、様々な環境に合わせたリソースを適用できます。
-ja-en-zhなどの修飾子でstrings.xmlを言語ごとに分けたり、-nodpi-hdpi-xxhdpiなどで端末の画素数に応じた画像を用意するなどといった方法はよく使われていますが、他にも色々な修飾子があることを知ったので、いくつか紹介したいと思います。

画面の向き

端末が縦横どちらに回転しているかでリソースを分けることができます。

  • -land: 横向き(landscape)画面用
  • -port: 縦向き(portlait)画面用

下記のようにlayoutフォルダに修飾子をつければレイアウトのXMLファイルを、drawableフォルダに修飾子をつければ画像を分けることができます。

画面サイズ

dp単位で画面サイズを指定し、リソースファイルを分けることができます。

  • -w[XXX]dp: 横幅がXXXdp以上の時に適用されます。「-w360dp」であれば、画面の横幅が360dp以上の時という意味になります。
  • -h[XXX]dp: 高さの指定はこちらです。「-h480dp」で高さが480dp以上の時という意味です。

テキスト入力方法

端末にハードウェアキーボードが搭載されているかどうかでリソースを分けられます。

  • -nokeys:端末にハードウェアとしてのキーボードが無い
  • -qwerty:端末にハードウェアとしてqwertyキーボードが搭載されている
  • -12key:ガラケーのような12key(「0〜9」「*」「#」)が搭載されている

複数修飾子の組み合わせ

修飾子は組み合わせることができます。
例えばres/values-ja-land/strings.xmlというパス名のファイルを作成すると、「日本語環境で横向き画面の時に適用されるstrings.xml」ということになります。

ただし注意点として、複数の修飾子を組み合わせる際には、順番が決まっています。上記の例であれば、「values-land-ja」は不可になります。間違えた場合はリソースフォルダが認識されず、AndroidStudioがエラーを吐いて教えてくれます。
修飾子の順番については、公式のドキュメントにある表2の順番に従って命名してください。

「縦向きのスマートフォン」と「横向きのタブレット」では横幅に大きな違いが生じますので、上述の「画面の向き」「画面サイズ」の修飾子を組み合わせることで、最適なレイアウトを出し分けやすくなりそうです。

その他

他にも様々な修飾子があります。
APIレベルによる切り分けはよく見ると思います。-v24ならNougat用、-v26でOreo用となります。
他にも車載端末用の-car、テレビUI用の-television、手首に装着するデバイス用の-watchなどがありました。
あらゆるデバイスに搭載されることを想定しているAndroidらしさを感じます。

さいごに

いかがでしたでしょうか。いざ調べてみると、実に多様な修飾子があることが分かりました。
修飾子によってはAPIレベルによる制限があり、今後もSDKのバージョンアップごとにどんどん追加されていくのだろうと思います。
プログラム側での不要な分岐処理を減らし、リソースファイルの管理をしやすくするために、なるべく積極的に使っていきたい機能です。

参考:リソースの提供 | Android Developers
https://developer.android.com/guide/topics/resources/providing-resources?hl=ja

page_footer_300rect




page_footer_300rect




-Android

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

[Android] KotlinでTextToSpeech

1 はじめに2 環境3 MainActivity.kt4 SpeechListener.kt5 activity_main.xml6 さいごに はじめに こんにちは。最近ようやくKotlinに手を付け ...

Android Studioでエラーログを詳細表示する

1 はじめに2 初期設定でのビルドエラーメッセージ3 詳細なビルドエラーメッセージを出力4 おまけ5 さいごに6 おすすめ書籍 はじめに こんにちは。Android開発を久しぶりにやっているのですが、 ...

Kotlinのスコープ関数を調べて見た

1 はじめに2 スコープ関数とは3 スコープ関数の種類について4 with関数4.1 使い方4.1.1 withを使わない場合4.1.2 withを使う場合4.2 所感5 apply関数5.1 使い方 ...

[Androidアニメーション]Shared Elements遷移

1 はじめに2 Shared Elements遷移とは3 layout xml4 Activity遷移5 その他6 さいごに はじめに 最近、雨が多いですね。そんな時は家にこもって、プログラミングをす ...

[Android] Firebase ML Kit勉強会に参加してきました

1 はじめに2 Firebase ML Kitとは3 準備するもの4 動かすまでの手順4.1 gradleのsyncがうまくいかない場合5 テキスト認識を試してみる6 画像のラベル付けを試してみる7 ...

フォロー

follow us in feedly

page_side_300rect

2018年6月
« 5月   7月 »
 12
3456789
10111213141516
17181920212223
24252627282930

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。 下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。