設定wrap_content
は、その内容によって必要な寸法にサイズ自体にあなたの見解を伝えます。テストの場合、画像は1080x1920で、端末の画面解像度はおそらく1080x1920であるため、完璧にフィットします。幅と高さをwrap_content
に設定しているため、Androidは提供されたコンテンツの量を正しく表示するのに必要なだけの画面スペースを使用しようとしています。この場合、使用可能なスクリーンスペースはコンテンツのサイズと一致するため、完全に適合します。
しかし、デバイスの画面が1080x1920でない場合はどうなりますか?その場合、Androidは可能な限り多くのスペースしか使用しませんが、使用可能な画面スペースの境界内に画像を収めようとします。言い換えれば、システムは画像を適切に縮小して、それを提供したコンテナに収める。しかし、アスペクト比が画像と同じでない場合は、これは不自然なフィットにつながります。例えば、以下のこのスクリーンショットを参照してください。
この画像は1920×1080であるが、それは非常にフィットしないことに注意してください。これは、このネクサス7の画面が横長で表示されているため、1824x1200です。さらに、画面の上部にあるツールバーは、使用可能なスクリーンスペースを使い果たしているため、視認可能な領域がさらに小さくなり、厄介な形になります。したがって、システムはこの画像を左と右の境界線までずっと伸ばしてはいけませんが、そうすることはできません。なぜなら、その高さは視認可能な空間よりも大きくなるからです。この画像を表示するためにwrap_content
を使用していたため、システムはできるだけ多くの垂直スペースを使用していました。その結果、画像は水平スペースにあまり適合しません。
wrap_content
は、より具体的には、dp
と同様に、複数の画面サイズにわたって一貫性のある外観を得るのを容易にする相対的なサイズの設定です。しかし、数千ものAndroidデバイスが市場に出ていても数千もありませんが、画面サイズや密度はさまざまです。だからあなたのドロアブルは、あなたがそれらをすべてのデバイスに必要とするように常に現れるとは限りません。
これを解決する方法は、複数のバージョンのアセットを提供し、異なる画面サイズと密度の代替レイアウトファイルを提供することです。一度それをしたら、もう一度テスト、テスト、テストするだけです。あなたが望む外観を確実に得るために、あなたが所有していない奇妙な画面密度やデバイスにエミュレータを使用してください。 1920x1080の画像の場合、その1台のデバイスでは大丈夫ですが、画像の解像度よりも小さい大きなタブレットや小型の携帯電話にはどうやってフィットしますか?これらは、設計時に考慮する必要がある状況です。
彼らはさまざまな画面サイズと密度に起因する問題に対処する方法を学ぶには非常に便利ですように私は、あなたがこれらのリソースを読むことをお勧め:
http://developer.android.com/guide/practices/screens_support.html http://developer.android.com/training/multiscreen/screensizes.html