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 件のコメント:
コメントを投稿