dpとはdevice independent pixelの略で、デバイス非依存のピクセル、もう少し具体的にいうとLCDデバイスに依存しないピクセルという単位のことです。
定義は「160dpiのときの1dp=1ピクセル」です。
なぜピクセルでなくこんなdpという単位を使うかというと、Androidはさまざまな端末があり、LCDのdpi(dot per inch、1インチあたりのピクセル数)もバラバラです。そんなバラバラなデバイスであっても、アプリでこの大きさで表示したいといった画像は、どんなデバイスでも同じ大きさで表示してほしいからです。
もしここで物理的なサイズのピクセルで大きさを指定すると、例えばアプリが160ピクセルの正方形を表示するとして、160dpiのLCDで表示したときの物理的な大きさは1インチになりますが、320dpiのLCDで表示したときには半分の大きさの0.5インチになってしまいます。これをLCDのdpiに関係なく同じ物理的な大きさで表示させるためにdpを使います。
もし先ほどの例で160ピクセルでなく160dpを指定した場合、160dpiのLCDのときは160ピクセルに変換されて表示され、物理的な大きさは1インチになります。320dpiのLCDのときは320ピクセルに変換されて表示され、物理的な大きさは同じ1インチになります。
機種依存のないアプリを作るにはdpは非常に役に立ちます。
注意点はxmlレイアウトファイルなどでは単位を自由に指定でき、dp(またはdip)も当然使えるのですが、ソースコードのAPIのサイズ指定はたいていはピクセルです。そのときにdpを使いたい時は手動で変換する必要があります。
変換方法は、「ピクセル=dp × getResources().getDisplayMetrics().density」です。
その他の画像の単位として、
- pt:ポイント、1/72インチ
- mm:ミリメーター
- in:インチ
No comments:
Post a Comment