dpiとdip

Android端末の様々な大きさの画面に対応する為に、アプリの設定ではpxではなくdipという単位を使います。

dip。
Density Independent Pixel。
この値を使うと、端末のdpiによってサイズが切り替わります。
dpiによってサイズが変わることで、ボタンやテキストなどの画面上でのサイズを統一することができます。
(pxで直接指定してしまうと、dpiの低い端末では大きく、高い端末では小さくなってしまいます。)

端末のdpiの分類
・xhdpi(320dpi) ※2.3から
・hdpi(240dpi)
・mdpi(160dpi)
・ldpi(120dpi)

mdpi(160dpi)の時、1dip = 1pxとなります。

画像を扱う場合は、drawableフォルダに各dpiに合わせた画像を置いておけば、dpiによって読み込む画像が変わります。
(drawable-mdpiフォルダにいれておけば、mdpiの端末で読み込まれる)

dpiごとに画像を用意しなかった場合は、他dpiに用意した画像を拡大・縮小して表示する形になります。
(drawable-mdpiフォルダに画像を置いた状態で、hdpi端末から動かすと画像が拡大されて表示される)

dpiごとの倍率
・xhdpi:2 ※2.3から
・hdpi:1.5
・mdpi:1
・ldpi:0.75

拡大・縮小で画像が汚くなってしまうのを防ぐ場合には、dpiごとの倍率をかけたサイズの画像を用意しましょう。

以上。

Androidのレイアウトで画面いっぱいに表示したい時の設定

画面いっぱいに表示させる方法。

表示させたいアイテムのプロパティの

・Layout height
・Layout width

を「fill_parent」にすることで画面いっぱいに表示させることが出来ます。

ただ、この方法では複数のアイテムが並んでいる形の場合にうまくいきません。

LinearLayout
-Button
-TextView
-Button

と縦に並んでいる形のときに真ん中のTextViewを画面いっぱい表示させたいと考えます。

・TextViewのLayout heightを「fill_parent」にした場合
下のボタンが表示されていない

画面いっぱいに表示できてはいるのですが、下のButtonの表示スペースが無くなってしまっています。

解決方法。
TextViewのLayout weightプロパティの値を「1」にする事で解決できました。

・TextViewのLayout weightを「1」にした場合
下のボタンも表示される

Layout weightは余白がある場合に、どの程度利用するかの重みを設定します。
(複数のアイテムに同じ値を設定した場合、余白を均等に利用する形になり、差をつけた場合は大きい値のアイテムが余白を多く利用する形になります。)
未設定の状態は値が「0」、余白を利用しない設定です。