- 用法--通过WindowManager将设置信息存放到DisplayMetrics中
-
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(outMetrics); mScreenHeight = outMetrics.heightPixels; Logger.d(TAG, "--toStrng-" + outMetrics.toString()); Logger.d(TAG, "--屏幕高度-" + outMetrics.heightPixels); Logger.d(TAG, "--屏幕宽度-" + outMetrics.widthPixels); Logger.d(TAG, "--scaledDensity-" + outMetrics.scaledDensity); Logger.d(TAG, "--设置密度-" + outMetrics.density); Logger.d(TAG, "--densityDpi-" + outMetrics.densityDpi); Logger.d(TAG, "--xdpi-" + outMetrics.xdpi); Logger.d(TAG, "--ydpi-" + outMetrics.ydpi);
- 打印结果
- 其中
outMetrics.widthPixels
outMetrics.heightPixels 为设备宽和高的像素outMetrics.density为密度为3.0
outMetrics.densityDpi为密度api480
- 源码分析Display类
-
public void getMetrics(DisplayMetrics outMetrics) { synchronized (this) { updateDisplayInfoLocked();
-
//在这个方法中获取屏幕信息 mDisplayInfo.getAppMetrics(outMetrics, mDisplayAdjustments); } }
- 查看getAppMetrics方法-->最后在Display类中获取
private void getMetricsWithSize(DisplayMetrics outMetrics, CompatibilityInfo compatInfo, Configuration configuration, int width, int height) { outMetrics.densityDpi = outMetrics.noncompatDensityDpi = logicalDensityDpi; outMetrics.density = outMetrics.noncompatDensity = logicalDensityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE; outMetrics.scaledDensity = outMetrics.noncompatScaledDensity = outMetrics.density; outMetrics.xdpi = outMetrics.noncompatXdpi = physicalXDpi; outMetrics.ydpi = outMetrics.noncompatYdpi = physicalYDpi; width = (configuration != null && configuration.screenWidthDp != Configuration.SCREEN_WIDTH_DP_UNDEFINED) ? (int)((configuration.screenWidthDp * outMetrics.density) + 0.5f) : width; height = (configuration != null && configuration.screenHeightDp != Configuration.SCREEN_HEIGHT_DP_UNDEFINED) ? (int)((configuration.screenHeightDp * outMetrics.density) + 0.5f) : height; outMetrics.noncompatWidthPixels = outMetrics.widthPixels = width; outMetrics.noncompatHeightPixels = outMetrics.heightPixels = height; if (!compatInfo.equals(CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO)) { compatInfo.applyToDisplayMetrics(outMetrics); } }
- 最后发现所求的参数信息都是在DisplayMetrics类中处理
通过DisplayMetrics获取屏幕分辨率等参数以及源码解析
最新推荐文章于 2024-05-10 19:10:15 发布