与屏幕密度dpi有关
dp*dpi/160 = px。比如1dp x 320dpi/160 = 2px。
px = dp*dpi/160
dp = px / (dpi / 160)
px = sp*dpi/160
sp = px / (dpi / 160)
代码中获得屏幕密度
float xdpi = getResources().getDisplayMetrics().xdpi; float ydpi = getResources().getDisplayMetrics().ydpi; Log.d("MainActivity", "xdpi is " + xdpi); Log.d("MainActivity", "ydpi is " + ydpi);
我的测试机为480dpi
即1dp=3px
160dpi的屏幕上,1dp=1px
320dpi的屏幕上,1dp=2px