Android hdpi ldpi mdpi xhdpixxhdpi適応の詳細



Android Hdpi Ldpi Mdpi Xhdpi Xxhdpi Adaptation Detailed



1.いくつかの概念を理解する
(1)解決。解像度は、携帯電話の画面上のピクセル数です。これは一般に、画面の「幅×高さ」として説明されます。 Androidスマートフォンの画面の一般的な解像度は、480×800、720×1280、1080×1920です。 720×1280は、この画面の幅方向が720ピクセル、高さ方向が1280ピクセルであることを示します。
(2)画面サイズ。画面サイズは、電話の対角線の物理的なサイズ(インチ単位)です。たとえば、ある携帯電話は「5インチ大画面携帯電話」で、対角サイズは5インチ×2.54cm /インチ= 12.7cmです。

(3)密度(dpi、1インチあたりのドット数またはPPI、1インチあたりのピクセル数)。名前が英語で意味するように、それはインチあたりのピクセル数です。値が大きいほど、表示が細かくなります。携帯電話の解像度が1080×1920、画面サイズが5インチであることがわかっている場合、この画面の密度を計算できますか?ハハ、高校のピタゴラス定理が役に立ちます!ピタゴラス定理によれば、対角線上のピクセル数は約2203であることがわかり、2203を5で割るとこの画面の密度になり、計算結果は440になります。440dpiの画面は非常に繊細です。 。



2.実際の密度とシステム密度
「実際の密度」と「システム密度」という言葉は他の場所では見つかりませんでした。これについては、当面定義します。
「実際の密度」は、私たちが自分で計算した密度です。この密度は、画面の真のレベルを表します。たとえば、上記の例の440dpiは実際の密度であり、画面が1インチあたり440であることを示しています。ピクセル。 5インチの1080x 1920の画面密度は440ですが、同じ解像度の4.5インチの画面密度は490です。このように、画面密度は多くの値で表示され、深刻な断片化を示します。密度はAndroid画面が表示を拡大縮小するための基礎ですが、Androidはどのように多くの画面に適合しますか?
実際、各Androidスマートフォンの画面には初期の固定密度があり、これらの値は120、160、240、320、480であり、「システム密度」と呼ばれます。誰もが法律がないことに気づきましたか?分離された値の間の値は2倍です。一般に、240×320画面は低密度120dpi、つまりldpi、320×480画面は中密度160dpi、つまりmdpi、480×800画面は高密度240dpi、つまりhdpi720×1280画面は超高密度320dpi、つまりxhdpi1080×1920画面は超高密度480dpi、つまりxxhdpiです。
Androidは、実際の密度ではなく、システム密度に基づいてインターフェース要素をスケーリングします。



3.重要な単位dp
dpは、密度に依存しないピクセルであるdipとして記述することもできます。 dpは物理的なサイズに似ていると想像できます。たとえば、幅と高さが100dpの画像は、320x480および480x800の電話では「見た目」が大きくなります。実際、それらのピクセル値は同じではありません。 Dpはそのようなサイズであり、この画面の密度に関係なく、画面上の同じdpサイズ要素は常にほぼ同じように見えます。
また、テキストサイズはscale-independentpixelの略であるspを使用しているため、システム設定でフォントサイズのサイズを調整すると、アプリケーション内のテキストがどんどん大きくなります。



4、dpおよびpx変換
Androidでは、システム密度が160dpiの中密度の携帯電話画面がリファレンス画面であり、320×480の携帯電話画面です。この画面では、1dp = 1pxです。
100dpは320×480(mdpi、160dpi)で100pxです。では、480×800(hdpi、240dpi)の電話で100dpは何ピクセルですか? 100dpは両方の電話でほぼ同じように見えることがわかっています。 160対240の比率によると、480×800では100dpが実際に150pxをカバーしていることがわかります。したがって、mdpi電話に100pxの画像を提供すると、hdpi電話では150pxに拡大されますが、すべて100dpです。
中密度および高密度のスケーリングは、160dpiおよび240dpiなしで計算されているようですが、320pxおよび480pxでも計算されています。ただし、幅によるスケーリングは、超高密度xhdpiおよび超高密度xxhdpiには適用されません。つまり、720×1280で1dpは何ピクセルですか? 720/320を使用すると、1dp = 2.25pxになりますが、これは実際には間違っています。 dpとpxの変換は、システム密度に基づいています。 720×1280のシステム密度は320、320×480のシステム密度は160,320 / 160 = 2、720×1280では1dp = 2pxです。同様に、1080×1920では、1dp = 3pxです。
次の比率を覚えておいてください。dpとpxの変換はとても簡単です。
ldpi:mdpi:hdpi:xhdpi:xxhdpi = 3:4:6:8:12では、数値間に2倍の関係があることがわかりました。計算時には、mdpiに基づいています。たとえば、720×1280(xhdpi)では、1dpは何ピクセルに等しいですか? Mdpiは4、xhdpiは8、2倍、つまり1dp = 2pxです。計算はもっと重要です。たとえば、PhotoShopを使用して720×1280のキャンバスでインターフェイスレンダリングを作成する場合、2つの要素間の間隔は20pxです。いくつのdpをマークする必要がありますか?関係の2倍、つまり10dpです。

Androidのフォントサイズが「通常」に設定されている場合、spとpxのサイズ変換はdpとpxと同じです。たとえば、720×1280のPSキャンバスでテキストサイズが24pxの場合、テキストサイズが12spであることをエンジニアに伝えます。

5、xdhpiでプロットすることをお勧めします
Android携帯には非常に多くの画面があります。どの画面を使用してマップしますか?密度の異なる電話用の一連の資料を提供する必要はありません。ほとんどの場合、1セットで十分です。
電話の高解像度は1080×1920になりました。描画にはこのサイズを選択できますが、画像素材によってアプリケーションパッケージのサイズが大きくなります。また、画像のサイズが大きいほど、メモリが多くなります。 ROMではなくアプリケーションを設計している場合は、PSを使用して720×1280のキャンバスにマップすることをお勧めします。このサイズは、美学、経済性、計算の単純さを兼ね備えています。美学とは、このサイズで作成されたアプリケーションが720×1280で完璧を示し、1080×1920ではっきりと見えることを意味します。経済的とは、この解像度で得られる画像サイズが中程度であり、メモリ消費が中程度であることを意味します。高すぎず、画像ファイルのサイズが中程度であれば、インストールパッケージは大きすぎません。計算は簡単です。つまり、1dp = 2pxで、どれだけの計算になりますか。
画像を作成します。インターフェイスエンジニアがそれをdrawable-xhdpiのリソースフォルダに配置することを忘れないでください。

6、画面の幅と高さの違い
720×1280でプロットし、さまざまな画面との下位互換性を考慮してください。計算により、320×480と480×800の画面幅は両方とも320dpであり、720×1280と1080×1920の画面幅は両方とも360dpであることがわかります。それらの間には40dpのギャップがあり、この40dpは設計に大きな影響を与えます。以下に示す蝶の画像は、320dpワイドスクリーンおよび360dpワイドスクリーンの画面の左右の余白とは異なります。

幅の違いだけでなく、高さの違いもより顕著です。天気などのツールの場合、インターフェースは一般的に排他的であるため、画面間の違いを考慮する必要があります。

これらの比率の違いを排除したい場合は、レイアウトファイルを追加することでこれを行うことができます。通常、レイアウトファイルはレイアウトフォルダに配置されます。 360dp画面を個別に調整する場合は、layout-w360dpでレイアウトファイルを作成して、特別な解像度を調整することができます。 、次に、layout-854×480などの解像度でマークされたフォルダーにレイアウトファイルを配置できます。

7、いくつかのリソースフォルダ
720×1280で画像を作成し、正しく表示できるように、開発者にdrawable-xhdpiのリソースフォルダーに入れてもらいます。個人的には、一組の資料しか提供できないと思います。アプリケーションがローエンドの携帯電話でスムーズに実行されるかどうかをテストできます。カードを比較すると、xhdpiの画像はmdpi携帯電話で実行されるため、必要に応じてmdpi画像素材を提供できます。メモリを比較します。
アプリケーションアイコンを例にとると、xhdpiのアイコンサイズは96pxです。アイコンをmdpiに個別に提供する場合、アイコンのサイズは48pxで、drawable-mdpiのリソースフォルダーに配置されます。各リソースフォルダーの画像サイズも、ldpi:mdpi:hdpi:xhdpi:xxhdpi = 3:4:6:8:12の法則に準拠しています。

高い2pxの分割線マテリアルを9.png画像に作成し、密度に基づいてAndroidでスケーリングするのではなく、細い線を異なる密度で2pxにしたい場合はどうなりますか?このシャードラインマテリアルをdrawable-nodpiに入れることができます。このリソースフォルダ内の画像は、実際のピクセルサイズに従って表示され、Androidによって密度に応じて拡大縮小されることはありません。つまり、細い線はmdpiでは2px(2dp)であり、細い線はxhdpiでは2px(1dp)です。

上記はAndroid画面の予備的な要約です。読んだ後、いきなり開いたのか、霧なのかわかりません。この記事は主に実用的な理由で、あまり詳細な分析を避けています。質問がある場合は、メッセージを残すことができます。