画面の互換性の概要

Android は、画面サイズとピクセル密度がさまざまに異なる多くのデバイス上で動作します。各画面に合わせた UI の基本的なスケーリングとサイズ変更はシステムが行いますが、各画面に UI をスムーズに適応させるためにデベロッパーがさらに行うべき作業があります。

このページでは、こうしたトピックについて概説します。また、アプリを画面に適応させるのに役立つ、Android の機能を紹介します。画面の違いに合わせてアプリを作成する方法について詳しくは、以下のページをご覧ください。

画面サイズ

画面サイズとは、アプリの UI 用に提供される表示スペースです。アプリが認識する画面サイズは、デバイスの画面の実際のサイズではなく、画面の向き、システム デコレーション(ナビゲーション バーなど)、ウィンドウ構成の変更(ユーザーによるマルチウィンドウ モードの有効化など)が考慮されます。

柔軟なレイアウト

デフォルトでは、Android によってアプリのレイアウトのサイズが現在の画面に合わせて変更されます。画面サイズのわずかな変化に対してもレイアウトのサイズ変更が適切に行われるようにするには、柔軟性を念頭に置いてレイアウトを実装する必要があります。そのため、UI コンポーネントの位置とサイズのハードコードを避けるという基本原則に従う必要があります。表示サイズを伸縮できるようにし、親ビューや他の兄弟ビューに対する相対的な表示位置を指定することで、レイアウトが拡大しても、意図した順序や相対的サイズをそのまま維持することができます。

柔軟なレイアウトの詳細をご確認ください

代替レイアウト

柔軟なレイアウトは非常に重要ですが、スマートフォンやタブレットなどの各種デバイスのスペースに合わせてユーザー エクスペリエンスを最適化するために、異なるレイアウトを設計する必要もあります。Android では、デバイスの現在の画面サイズに基づいてシステムが実行時に適用する代替レイアウト ファイルを提供できます。

図 1. 同じアプリでも、画面サイズに合わせて異なるレイアウトを使用できる

代替レイアウトの作成方法をご確認ください

伸縮可能な画像

レイアウトは現在の画面に合わせて伸縮する必要があるため、すべてのレイアウト表示にアタッチするビットマップも同様に伸縮する必要があります。しかし、通常のビットマップを任意の方向に伸縮すると、アーティファクトが正常に伸縮しなかったり画像がゆがんだりすることがあります。

この問題を解決するために、Android では 9-patch ビットマップをサポートしています。9-patch ビットマップでは、伸縮可能な小さなピクセル領域を指定します(他の領域は伸縮されないままになります)。

9-patch ビットマップの詳細をご確認ください

ピクセル密度

ピクセル密度とは画面の物理領域内のピクセルの数であり、dpi(1 インチあたりのドット数)で表します。ピクセル密度は解像度(画面の総ピクセル数)とは異なります。

図 2. サイズが同じでピクセル密度が異なる 2 台のデバイスを誇張表現したもの

密度非依存

アプリが「密度非依存」であるとは、図 2 に示すようにアプリをピクセル密度の異なる画面で表示しても UI 設計の物理サイズが(ユーザーの視点から見て)変わらないことを言います。密度非依存が実現されない場合、ボタンなどの UI 要素が低密度画面では大きく、高密度画面では小さく表示されるため、密度非依存を維持することが重要です(図 2 に示すように、ピクセルが大きい場合、少数のピクセルで UI 要素を表現できます)。

Android システムでは、測定単位としてピクセル(px)ではなく密度非依存ピクセル(dp または dip)を指定することによって密度非依存を実現できます。

密度非依存ピクセルの詳細をご確認ください

代替ビットマップ

あらゆる画面に最適な状態の画像を表示するには、各画面密度に合わせた代替ビットマップを指定する必要があります。たとえば、アプリに用意されているビットマップが中密度(mdpi)画面向けのみの場合、高密度画面では Android によってビットマップが拡大され、画像が画面上で同じ物理スペースを占有するようになります。この場合、ビットマップでアーティファクトの表示の拡大が行われる可能性があります。そのため、高解像度の場合はアプリに代替ビットマップを含める必要があります。

代替ビットマップの指定方法をご確認ください

ベクター グラフィック

単純なタイプの画像(アイコンなど)の場合、ベクター グラフィックを使用することで、密度ごとに別々の画像を作成せずに済みます。ベクター グラフィックでは、ピクセルではなく幾何学的なラインパスを使用してイラストを定義するため、アーティファクトを拡大することなく、任意のサイズでイラストを描画することができます。

ベクター グラフィックの使用方法の詳細をご確認ください

Wear OS、TV、Auto、Chrome OS

上記の推奨事項はすべての Android フォーム ファクタに適用されます。ただし、Wear OS、Android TV、Android Auto、Chrome OS デバイス向けのアプリを作成する場合は、もう少し作業が必要になります。

これらの各デバイスには、アプリが対応する必要がある独自のユーザー操作モデルがあります。一部のケース(Wear OS 向けアプリなど)では、アプリのユーザー エクスペリエンスを見直して、そのデバイス専用のアプリを作成する必要があります。また、Chrome OS デバイス(Google Pixelbook など)に関しては、既存のアプリを少し変更するだけで、キーボードとマウスの操作や大画面に対応できる場合があります。

これらのデバイスをサポートするには、以下のデベロッパー ガイドを参照してください。

画面の非互換性

Android のフレームワークとツールには、アプリをあらゆる画面構成で使用できるようにするために必要なものがすべて用意されていますが、なんらかの非互換性により、画面構成によってはアプリを使用不可にする場合もあります。

そのような場合、アプリが特定の画面のみをサポートしていることを宣言できます。