ブログBlog

「 dp を pixel に変換する」

投稿日:2014年10月28日

こんにちは。平野洋平です。
めっきり寒くなってきました。
休日は押し入れからコートを出したり、コタツを出したり。
せわしないです。

そして、うちの猫は(まだ生後5ヶ月なので)
生まれて初めての”冬”を迎えることになります。
猫らしく、コタツが好きみたいです。
たまに、足を入れると不意に引っ掻かれます。
コタツを巡っての闘いです。
こちらも、せわしないです。

最近は、Android で dp を pixel に変換しています。

Pixels ( pixel ) は日本語で「ピクセル・画素」です。
たとえると「ツブ」とか「色のついた点」です。
1ピクセルで1色、のように考えてもらえればいいと思います。
なので、100万画素なら、100万個のツブがあることになります。

また、よく目にするのが「解像度 dpi 」。
これは、ディスプレイなどの能力のことです。
dots per inch の略で、
「1インチ(約3センチ)あたり、何個のツブを使って表現できます」
ということです。
デジタル画像はツブの集まりなので、絵画でいうと点描画のようなものです。
なので、解像度が高いほうが、より細かく描画できることになります。

そして、dp(時に dpi と書かれる)は、Density-independent Pixels の略です。
訳すと「 密度 ( Density ) に依存しない ( independent ) ピクセル ( Pixels ) 」となります。
これは、使っているディスプレイの能力(解像度)に関係ないです。
横幅は何ツブで、縦幅は何ツブ、のように指定して使います。
例えば、横960 dp ,縦600 dp のように書きます。

さて、Androidでコードを書いていると、dp を pixel 変換したい時があります。
その場合は、Android reference の中にある
Converting dp units to pixel units
を参考にします。
// Get the screen’s density scale 
final float scale = getResources().getDisplayMetrics().density;
これで、画面の解像度の比率 scale を求めることができます。
そして、この scale を dp 単位の値に掛ければ、pixel 単位に変換できます。

PAGE TOP