我已阅读了官方文件,但仍然不理解!
我正在玩Android并尝试使用最小宽度的布局,这对我没有任何意义。
我创建了这些布局:sw-300dp/350dp/360dp/400dp/450dp/500dp/
但我的Galaxy S7使用sw-360dp layout
。但360dp
远不是getDisplayMetrics();
证明的任何数字或我从GSMArena获得的屏幕数量。那么为什么Galaxy S7使用360dp
而不是500dp
,因为xdpi是580dp并且更接近500dp?
测试手机:三星Galaxy S7
屏幕尺寸: 5.1“
决议: 1440x 2560(577 ppi)
来自det Logcat我重新检索了手机的以下屏幕值:
getDisplayMetrics().densityDpi: 640
getDisplayMetrics().xdpi: 580
getDisplayMetrics().ydpi: 575:
getDisplayMetrics().widthPixels: 1440
答案 0 :(得分:0)
S7上的屏幕密度为4.0
这意味着每dp有4个像素,因此屏幕宽度为1440/4 = 360dp。
我经常使用以下方法:
public static int dpToPx(int dp) {
return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
}
public static int pxToDp(int px) {
return (int) (px / Resources.getSystem().getDisplayMetrics().density);
}