私のAndroidアプリでは、一部の画像を「mdpi」に保持し、 「ldpi」に残しています。また、私のアプリはさまざまなデバイス(仮想およびモバイル)で適切に動作しています。画像は、デバイスの解像度で取得されると想定されていませんか。どうして表示されるの???
4 に答える
mdpi と ldpi はオーバーライドです。Android が探している名前でドローアブルを見つけた場合はそれを使用しますが、複数の画像が異なる解像度で存在する場合は、最も近いものを選択します。
デフォルトでは、Android はビットマップ ドローアブル (.png、.jpg、および .gif ファイル)とNine-Patchドローアブル(.9.png ファイル)をスケーリングして、各デバイスで適切な物理サイズでレンダリングします。
たとえば、アプリケーションがビットマップ ドローアブルのみを提供する場合baseline
、medium screen density (mdpi)
システムは高密度画面では拡大し、低密度画面では縮小します。このスケーリングにより、ビットマップにアーティファクトが発生する可能性があります。ビットマップが最高の状態で表示されるようにするには、画面密度ごとに異なる解像度の代替バージョンを含める必要があります。
密度固有のリソースに使用できる構成修飾子は次のとおりldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
です。たとえば、高密度画面のビットマップはres/drawable-hdpi
.
画面に関する詳細については、こちらを参照してください。
Android には、正しいドローアブルを選択するための非常に特殊なアルゴリズムがあります。外観は次のとおりです。
ここで詳しく説明されています:
http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch
シナリオは次のとおりです。
レイアウト:-
res/layout/my_layout.xml // layout for normal screen size ("default") (320 * 480)
res/layout-small/my_layout.xml // layout for small screen size (240 * 320)
res/layout-large/my_layout.xml // layout for large screen size (480 * 800/854)
res/layout-xlarge/my_layout.xml // layout for extra large screen size (720/800 * 1280)
ドローアブル:-
res/drawable-mdpi/my_icon.png // bitmap for medium density, used by layout-small & layout
res/drawable-hdpi/my_icon.png // bitmap for high density, used by layout-large
res/drawable-xhdpi/my_icon.png // bitmap for xtra-high density, used by layout-xlarge
それが役立つことを願っています。混乱がある場合は、質問してください。こちらも一度お読みくださいScreens Support APIs
ありがとう。