通过DisplayMetrics获取屏幕分辨率等参数以及源码解析
2016-08-02 16:43
609 查看
用法--通过WindowManager将设置信息存放到DisplayMetrics中
打印结果
其中
源码分析Display类
查看getAppMetrics方法-->最后在Display类中获取
最后发现所求的参数信息都是在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.widthPixelsoutMetrics.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类中处理
相关文章推荐
- android获取屏幕分辨率大小(DisplayMetrics)
- 通过源码获取iphone硬件版本以及系统信息
- Android获取屏幕分辨率及DisplayMetrics简介
- Android获取屏幕分辨率及DisplayMetrics简介
- Android获取屏幕分辨率及DisplayMetrics
- 获取屏幕分辨率以及状态栏标题栏高度最简洁的办法
- js获取网页可见区域、正文以及屏幕分辨率的高度
- Android获取屏幕分辨率及DisplayMetrics简介
- Android获取屏幕分辨率及DisplayMetrics简介
- Android获取屏幕分辨率及DisplayMetrics简介
- Android获取屏幕分辨率及DisplayMetrics简介
- Android获取屏幕分辨率及DisplayMetrics简介
- 通过request对象获取访问网站用户的 IP 访问者的浏览器名 操作系统名 从哪里转过来 以及 Url 上的所有参数
- js获取网页可见区域、正文以及屏幕分辨率的高度
- Android获取屏幕分辨率及DisplayMetrics简介
- android DisplayMetrics--获取设备屏幕分辨率
- android中使用DisplayMetrics获取屏幕参数
- Android获取屏幕分辨率及DisplayMetrics简介
- android获取屏幕分辨率大小(DisplayMetrics)
- Android获取屏幕分辨率及DisplayMetrics简介