- 我从手机设置页面看到的屏幕数据是1520*720.但是代码获取的不是这个数据。
- 我没有加入任何适配修改density的框架和代码。
看图,和代码。为何我代码获取的是设置的对不上。是不是有其他api获取呢。

代码:
public void getAndroidScreenProperty() {
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; // 屏幕宽度(像素)
int height = dm.heightPixels; // 屏幕高度(像素)
float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = dm.densityDpi; // 屏幕密度dpi(120 / 160 / 240)
// 屏幕宽度算法:屏幕宽度(像素)/屏幕密度
int screenWidth = (int) (width / density); // 屏幕宽度(dp)
int screenHeight = (int) (height / density);// 屏幕高度(dp)
Log.i("ddpi", "getAndroidScreenProperty: ");
Log.d("ddpi", "屏幕宽度(像素):" + width);
Log.d("ddpi", "屏幕高度(像素):" + height);
Log.d("ddpi", "屏幕密度(0.75 / 1.0 / 1.5):" + density);
Log.d("ddpi", "屏幕密度dpi(120 / 160 / 240):" + densityDpi);
Log.d("ddpi", "屏幕宽度(dp):" + screenWidth);
Log.d("ddpi", "屏幕高度(dp):" + screenHeight);
}
x显示的日志:
com.wheel_x I/ddpi: getAndroidScreenProperty:
com.wheel_x D/ddpi: 屏幕宽度(像素):720
com.wheel_x D/ddpi: 屏幕高度(像素):1369
com.wheel_x D/ddpi: 屏幕密度(0.75 / 1.0 / 1.5):2.0
com.wheel_x D/ddpi: 屏幕密度dpi(120 / 160 / 240):320
com.wheel_x D/ddpi: 屏幕宽度(dp):360
com.wheel_x D/ddpi: 屏幕高度(dp):684
这个API感觉像是去除了虚拟按键之类的,试试getRealMetrcs()?
老板豪气,哈哈!!
我刚刚在看一篇关于屏幕dp的文章,突然想看看自己的手机是多少dp的。然后对着设置里面的参数,一顿操作后发现,我计算出来是270dp。然后用代码跑了一下是360dp。我突然就蒙蔽了。为何他不是1520,而是高度是1369,这为何要刨去一段高度呢。这是刘海的高度吗