基本的に、Android アプリケーションがサポートする必要がある主なデバイス カテゴリは 3 つあります。
- ハンドセット (電話)
- 小型タブレット (7 インチ カテゴリ)
- 大型タブレット (10 インチ以上)。
Android 3.2 より前の修飾子:
デバイスごとにリソースを分離するための修飾子を作成するGoogle の最初の試みは、少数のサイズのバケット ( small、normal、large、xlarge )を作成することでした。当初、ハンドセットデバイスは小型/標準のカテゴリにあり、市場に出回った最初の7インチ タブレットは大型で、最初の10 インチ タブレットは特大サイズだったため、これはうまくいきました。
Android 3.2 以降の修飾子:
しかし、新しい画面サイズのデバイスが市場に登場するにつれて、デバイスがどこに存在するかについての境界線が曖昧になり始めました。Android 3.2 では、デバイスの現在の幅/高さまたは「最小」幅に基づいてリソースを選択する新しい修飾子という形で、この問題に対する新しい解決策が提示されました。後者は、デバイスのサイズを画面の最も短い辺の幅 (密度に依存しないピクセル、または dp) で表すことによる新しい指定です。
新しいパラダイムを使用すると、小型タブレットを最小幅 600 dp、大型タブレットを 720 dp と定義するのが一般的になり、ハンドセットはその線より下にあるすべてのものになります。
最小サポートが 3.2 未満で、ターゲットが 3.2 以上の場合に修飾子を使用する
Android 3.2 以上を最小としてターゲットとするアプリケーションの場合、この新しいシステムはうまく機能します。ただし、ハンドセットやタブレットでユニバーサルに動作するアプリケーションを作成したい開発者が、Android の最小バージョンを 2.2 以下、またはせいぜい 2.3 でサポートする必要がある場合は、古いサイズのディレクトリに各リソースの複製を作成します。修飾子を削除し、対応する最小幅修飾子を持つ別のディレクトリに配置します。
たとえば、同じdimens.xml
ファイルをvalues-large
とに保持しますvalues-sw600dp
。したがって、Android バージョン 3.2 未満で実行されているデバイスは から値を取得values-large
し、Android バージョン 3.2 以上で実行されているデバイスは から値を取得します。values-sw600dp