提供几种方法获得屏幕参数, 包括分辨率,像素密度,伸缩密度
1.通过WindowManager获得默认的显示参数
WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Log.d(TAG, " X: " + display.getWidth() + " Y: " + display.getHeight());
result:
X: 720 Y: 1184
2.通过Point类获得坐标
Point displaySize = new Point();
display.getSize(displaySize);
Log.d(TAG, " Point.X: " + displaySize.x + " Point.Y: " + displaySize.y);
result:
Point.X: 720 Point.Y: 1184
3.通过DisplayMetrics获得详细的参数
DisplayMetrics dm = getResources().getDisplayMetrics();
Log.d(TAG, " dm.Xdpi: " + dm.xdpi + " dm.Ydpi: " + dm.ydpi);
Log.d(TAG, " dm.X: " + dm.widthPixels + " dm.Y: " + dm.heightPixels);
Log.d(TAG, " dm.densityDpi: " + dm.densityDpi );
result:
dm.Xdpi: 268.941 dm.Ydpi: 268.694
dm.X: 720 dm.Y: 1184
dm.densityDpi: 320
4.获得scaledDensity,即伸缩密度, 取值为 ppi/160。
举例来说,16dp大小的文字,在不同分辨率上显示的效果多大的像素就是这个值决定的,公式为:
px = dp × scaledDensity
float scale = this.getResources().getDisplayMetrics().density;
float scaledDensity = this.getResources().getDisplayMetrics().scaledDensity;
Log.d(TAG, " scale " + scale + ", scaledDensity: " + scaledDensity);
result:
scale 2.0, scaledDensity: 2.0