2010年10月28日木曜日

Android dip, dp, から pt, px に変換する

■ Converting from dips to pixel

Android refenrece の Converting from dips to pixels
に書いてある

  getContext().getResources().getDisplayMetrics().density

で画面解像度の比率を取得して、dip, dp 単位の値に掛ければ
pt, px 単位での値になる

dip -> px
// The gesture threshold expressed in dip private static final float GESTURE_THRESHOLD_DIP = 16.0f; // Convert the dips to pixels final float scale = getContext().getResources().getDisplayMetrics().density; mGestureThreshold = (int) (GESTURE_THRESHOLD_DIP * scale + 0.5f); // Use mGestureThreshold as a distance in pixels

px -> dip は反対に px 単位の値を
getContext().getResources().getDisplayMetrics().density
で割れば OK

android.util.DisplayMetrics.density が(その端末での) dip - pixel 間の変換用 scale factor

medium (160) density screen のとき、DisplayMetrics.density は "1.0" になり、high (240) density screen だと "1.5" になる


■ Use pre-scaled configuration values

ViewConfiguration は、Android framework で使われる一般的な距離、速度、時間のアクセスするためのクラス

例えば、framework で scroll threshold として使われる距離(ピクセル単位)は次のようにして取得できる
ViewConfiguration.get(aContext).getScaledTouchSlop()

getScaled で始まるメソッドは、現在の画面解像度に関係なく、適切に表示するためのピクセル単位の値を返す


0 件のコメント:

コメントを投稿