Androidにおけるdipとpxおよび変換に関するまとめ

1942 ワード

私たちはページレイアウトのとき、常に容器の長さを設定していますが、いったいどれを長さの単位として使うべきか悩んでいます.Androidでサポートされている記述サイズ領域のタイプは、px(pixels)--画素:異なるデバイスで表示効果が同じで、一般的にHVGAは320 x 480画素を表していますが、これは比較的多く使われています.dip(device independent pixels)--デバイス独立画素:これはデバイスハードウェアに関係しており、一般的にWCCA、HVGA、QVGAをサポートするために画素に依存せずに使用することを推奨しています.dpに等しい.sp(scaled pixels-best for text size)-主にフォント表示best for textsizeに使用されます.これによりGoogleの提案によると、TextViewの文字数はspを単位として使用するのが望ましい.また、TextViewのソースコードを見ると、Androidはデフォルトでspを文字数単位として使用していることがわかる.pt(points)--ポンド:標準的な長さ単位で、1 pt=1/72インチで、印刷業に使用され、非常に簡単で使いやすい.Androidでは、1 ptがおよそ2.22 sp以上の参考となりますが、UIがsp単位で設計を提供できるのがベストで、設計にspの概念がなければ、開発者も適切な換算で近似値を取ることができます.In(inches)--インチmm(millimeters)--ミリ過去、プログラマーは通常画素単位でコンピュータユーザーインタフェースを設計した.たとえば、幅300ピクセルのフォームフィールドを定義します.列間の間隔は5ピクセル、アイコンサイズは16です.×16ピクセルなど.このような処理の問題は、1インチあたりの点数(dpi)がより高い新しいディスプレイでプログラムを実行すると、ユーザインタフェースが小さく見えることである.場合によっては、ユーザーインタフェースがコンテンツを見極めにくいほど小さくなる場合があります.果たしてpxとdipにはどんな違いがあるのだろうか.
dip != px

主に異なる設備に対してです.Densityが160のデバイスでは、例えばAVDManagerで作成されたデフォルトシミュレータではdipとpxは同じですが、同じコードが異なるDensityのデバイスに変換されると、例えば1つのDensityが240のデバイスに変換されると、dipとpxが体現するサイズが異なります.pxはどんなデバイスでもそんなに長いですが、dipはデバイスによって変わります.WQVGA画面density=120;QVGA画面density=120;HVGAスクリーンdensity=160;WVGAスクリーンdensity=240;density値は、1インチあたり何個の表示点があるかを示し、解像度と2つの概念です.スクリーンdensity=240でhdpiタグを使用するリソーススクリーンdensity=160でmdpiタグを使用するリソーススクリーンdensity=120でldpiタグを使用するリソース.ラベルを付けないリソースは、さまざまな解像度で共有されます.ユーザインタフェースが現在および将来のディスプレイタイプで正常に表示されるように、常にspを文字サイズの単位として使用し、dipを他の要素の単位とすることをお勧めします.もちろん、ビットマップではなくベクトルグラフィックを使用することも考えられます.pxとdpの換算式は、pixs=dips*(densityDpi/160)である.dips=(pixs*160)/densityDpiは、デバイスの画面解像度と画面密度をどのように取得しますか?例えば、解像度480*800、密度240のデバイスでは、次のような方法があります.1 DisplayMetrics dm =getResources().getDisplayMetrics(); 2 dm.densityDpi= 240 3 dm.widthPixels= 480 4 dm.heightPixels= 800