構文:
<supports-screens android:resizeable=["true"| "false"]
                  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:xlargeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"]
                  android:requiresSmallestWidthDp="integer"
                  android:compatibleWidthLimitDp="integer"
                  android:largestWidthLimitDp="integer"/>
上位の要素:
<manifest>
説明:

アプリがサポートする画面サイズを指定できます。また、アプリがサポートする画面サイズより大きい画面の場合は、画面互換性モードを有効にすることができます。アプリがサポートする画面サイズを指定するには、この要素をアプリで常に使用することが重要です。

注: 画面互換性モードは、アプリの実行時に望ましいモードではありません。ズームにより UI のピクセル化やぼかしが生じるためです。大画面でアプリを適切に動作させるには、画面互換性の概要に沿って、画面サイズごとに代替レイアウトを提供することをおすすめします。

アプリが所定の画面サイズを「サポートしている」とは、適切にサイズ変更して全画面表示できることをいいます。ほとんどのアプリは、システムが適用する通常のサイズ変更に問題なく応じることができるため、スマートフォンより大きい画面でアプリを動作させるために何か特別なことをする必要はありません。

しかし、代替レイアウト リソースを提供して異なる画面サイズ用にアプリの UI を最適化する必要性が生じることも珍しくありません。たとえば、スマートフォン上での動きと比べて、タブレットでのアクティビティのレイアウトを修正したほうがよい場合などです。

ところが、異なる画面サイズに合わせてサイズ変更されたアプリが正常に動作しないことがあります。そのような場合に <supports-screens> 要素の属性を使用して、小さい方の画面のみを対象としてアプリを配信するか、システムの画面互換性モードを使用して大きい方の画面に合わせて UI を拡大(「ズーム」)するか、どちらかの方法で制御することができます。

大きい画面サイズを考慮して設計されておらず、通常のサイズ変更では適切な結果が得られないアプリの場合、画面互換性モードを有効にしておくと、UI のサイズが調整されます。まず、標準サイズの画面と中密度がエミュレートされ、その後画面全体に表示されるように拡大されます。ただし、この方法では UI がピクセル化したりぼやけたりするため、大画面向けに UI を最適化することをおすすめします。

注: Android 3.2 で新しい属性(android:requiresSmallestWidthDpandroid:compatibleWidthLimitDpandroid:largestWidthLimitDp)が導入されました。Android 3.2 以降を対象としたアプリの開発では、一般化された画面サイズに基づく属性ではなく、これらの属性を使用して画面サイズのサポートを宣言するようにしてください。

画面互換性モードについて

大きい画面サイズを活用できるように適切に設計されていないアプリにとって、画面互換性モードは最後の手段です。このモードはアプリの実行時には望ましいモードではありません。このモードでは十分なユーザー エクスペリエンスが得られない場合があります。画面互換性モードには、アプリが実行されるデバイスのバージョンに基づいて、2 つのバージョンがあります。

Android バージョン 1.6~3.1 では、アプリは「非常に小さい」ウィンドウで実行されます。320 dp x 480 dp の画面をエミュレートし、残りの周囲の領域を黒色で塗りつぶします。

Android 3.2 以降では、320 dp x 480 dp の画面と同じようにレイアウトを描画した後、画面に合わせて拡大します。これにより、ぼやけたりピクセル化したりといった影響が UI に生じることがよくあります。

さまざまな画面サイズを適切にサポートして、アプリで画面互換性モードを使用せずに済むようにする方法について詳しくは、画面互換性の概要をご覧ください。

属性:
android:resizeable
さまざまな画面サイズに合わせてアプリのサイズを変更できるかどうかを指定します。この属性のデフォルト値は "true" です。"false" に設定すると、大画面の場合にアプリが画面互換性モードで実行されます。

この属性はサポートが終了しています。これは、Android 1.5 から 1.6(複数画面のサポートが初めて導入されたバージョン)へのアプリの移行をサポートするために導入された属性です。 これは使用しないでください。

android:smallScreens
アプリが「小」画面のフォーム ファクタをサポートしているかどうかを指定します。小画面とは、「標準」(従来の HVGA)画面よりアスペクト比が小さい画面のことです。外部サービス(Google Play など)では、小画面をサポートしていないアプリを小画面のデバイス向けに提供しません。このようなアプリを小画面で動作させるためにプラットフォームでできることがほとんどないためです。この属性のデフォルト値は "true" です。
android:normalScreens
アプリが「標準」画面のフォーム ファクタをサポートしているかどうかを指定します。従来、標準画面のフォーム ファクタは HVGA 中密度の画面ですが、WQVGA 低密度と WVGA 高密度も標準と見なされます。この属性のデフォルト値は "true" です。
android:largeScreens
アプリが「大」画面のフォーム ファクタをサポートしているかどうかを指定します。「大」画面とは、「標準」のモバイル デバイスの画面よりかなり大きい画面のことです。そのため、この画面を有効に活用するにはアプリの側で特別な措置が必要になる可能性があります。ただし、画面全体への表示はシステムによるサイズ変更に依存することがあります。

この属性のデフォルト値はバージョンによって異なります。そのため、この属性は明示的に宣言することをおすすめします。"false" に設定すると、通常は画面互換性モードが有効になります。

android:xlargeScreens
アプリが「特大」画面のフォーム ファクタをサポートしているかどうかを指定します。特大画面とは、タブレット(あるいはそれより大きいデバイス)などの「大」画面よりさらに大きい画面のことです。そのため、この画面を有効に活用するにはアプリの側で特別な措置が必要になる可能性があります。ただし、画面全体への表示はシステムによるサイズ変更に依存することがあります。

この属性のデフォルト値はバージョンによって異なります。そのため、この属性は明示的に宣言することをおすすめします。"false" に設定すると、通常は画面互換性モードが有効になります。

この属性は API レベル 9 で導入されました。

android:anyDensity
任意の画面密度に対応するためのリソースがアプリに含まれているかどうかを指定します。

Android 1.6(API レベル 4)以降をサポートするアプリでは、この属性のデフォルト値は "true" です。アプリが動作するために必要な場合を除き、"false" には設定しないでください。この属性を無効にする必要があるのは、アプリでビットマップを直接操作する場合だけです。詳しくは、画面の互換性の概要をご覧ください。

android:requiresSmallestWidthDp
アプリに必要な最小の smallestWidth を指定します。smallestWidth は、アプリの UI の表示に必要な画面スペースの最小の寸法(dp 単位)です。言い換えれば、アプリを表示可能な画面の縦横短い方の寸法のことです。

デバイスがアプリに対応していると判定するには、デバイスの smallestWidth がこの値と同じかそれ以上である必要があります。通常ここで指定する値は、そのときの画面の向きに関係なくレイアウトがサポートする「最小の幅」です。

たとえば、一般的なスマートフォンの smallestWidth は 320 dp、7 インチ タブレットの smallestWidth は 600 dp、10 インチ タブレットの smallestWidth は 720 dp です。通常はこれらの値が smallestWidth です(これらの値が画面で利用可能なスペースの縦横のうち短い方の長さであるため)。

指定する値と比較するサイズには、画面の装飾とシステム UI が考慮されています。たとえば、デバイスのディスプレイ上に常駐の UI 要素がある場合、それらの UI 要素はアプリの UI に使用できない画面ピクセルとなるため、システムはデバイスの smallestWidth を実際の画面サイズより小さい値として宣言します。

アプリで小さな画面のサイズに合わせて適切にサイズ変更(「小」サイズまたは最小幅である 320 dp に縮小)できる場合は、この属性を使用する必要はありません。そうでない場合は、アプリで最小画面幅修飾子sw<N>dp)に使用する最小値と一致する値をこの属性に使用します。

注意: Android システムではこの属性は無視されるため、この属性がアプリの実行時の動作に影響することはありません。一方でこの属性は、Google Play などのサービスでアプリのフィルタリングに利用されます。ただし、現時点では Google Play ではフィルタリングにこの属性を使用できない(Android 3.2 の場合)ため、アプリが小画面をサポートしていない場合は引き続き他のサイズ属性を使用してください。

この属性は API レベル 13 で導入されました。

android:compatibleWidthLimitDp
デザインしたアプリの「最小画面幅」の最大値をこの属性に指定することで、画面互換性モードをユーザーが任意選択できる機能として有効にできます。デバイスの使用可能な画面の縦横のうち、短い方がここで指定した値より大きい場合、ユーザーはそのままアプリをインストールできますが、画面互換性モードで動作させることもできます。

デフォルトでは、画面互換性モードは無効になっており、レイアウトは通常どおり画面に合わせてサイズ変更されます。ユーザーが画面互換性モードのオンとオフを切り替えることができるボタンがシステムバーに表示されます。

アプリがすべての画面サイズに対応しており、レイアウトが適切にサイズ変更される場合は、この属性を使用する必要はありません。

注: 現在、画面互換性モードでエミュレートできるのは、画面幅が 320 dp のスマートフォン画面だけです。そのため、android:compatibleWidthLimitDp の値が 320 より大きい場合、画面互換性モードは適用されません。

この属性は API レベル 13 で導入されました。

android:largestWidthLimitDp
この属性を使用すると、アプリの「最小画面幅」の最大値を指定することで、画面互換性モードを強制的に有効にできます。デバイスの使用可能な画面の縦横のうち短い方がここで指定した値よりも大きい場合、アプリは画面互換性モードで動作し、ユーザーがこのモードを無効にすることはできません。

アプリがすべての画面サイズに対応しており、レイアウトが適切にサイズ変更される場合は、この属性を使用する必要はありません。そうでない場合は、まず android:compatibleWidthLimitDp 属性を使用することを検討してください。android:largestWidthLimitDp 属性は、大きい画面に合わせてサイズ変更されたときにアプリの機能に問題が発生し、アプリを使用するには画面互換性モードを有効にするしかない場合にのみ使用してください。

注: 現在、画面互換性モードでエミュレートできるのは、画面幅が 320 dp のスマートフォン画面だけです。そのため、android:largestWidthLimitDp の値が 320 より大きい場合、画面互換性モードは適用されません。

この属性は API レベル 13 で導入されました。

導入時の API レベル:
API レベル 4
関連項目: