预期结果
我有一些 UI 小部件,其尺寸是为 iPhone 4 Retina 设备设计的。单位是像素,例如一个 30 像素宽 x 30 像素高的按钮。我想将设计风格复制到 Android 设备中,比如之前的 30 x 30 按钮,在 iPhone 4 Retina 中占用 30/640 = 4.6875% 的屏幕宽度和 30/960 = 9.375% 的屏幕高度,那么我也期望它占用 Android 设备屏幕宽度的 4.6875%,屏幕高度的 9.375%。
问题
不知道以下代码中使用的 iPhone 4 Retina 设备的尺寸比例因子。
代码
/**
* Change dip value to pixel value using density of current device
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
Log.d("ch", "density of current device : " + scale);
return (int) (dpValue * scale + 0.5f);
}
/**
* Change pixel value to dip value using density of current device
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
Log.d("congliu", "density of current device : " + scale);
return (int) (pxValue / scale + 0.5f);
}
参考
iPhone 4 视网膜
ppi:326
分辨率:640 x 960 像素
尺寸比例因子:未知
三星盖乐世 S
ppi:233
分辨率:480 x 800 像素
尺寸比例因子:1.5
三星 Galaxy Note
ppi:285
分辨率:800 x 1280 像素
尺寸比例因子:2.0