Android系统信息获取 之十二:获取屏幕分辨率及密度
16lz
2021-12-16
Android系统信息获取 之十二:获取屏幕分辨率及密度
Android中屏幕分辨率可以有三种方式进行获取,一种是通过WindowManager获取,第二种是通过Resources获取,第三种是Display获取。 可结合具体环境灵活使用。
其中获取的屏幕宽高单位为px,屏幕密度的获取可以参考两个值density和densityDpi,可根据需要自行获取。
下面是把三种方式写成独立的方法,使用时可将方法的具体实现复制到具体代码中。
//获得手机的宽度和高度像素单位为px// 通过WindowManager获取 public void getScreenDensity_ByWindowManager(){DisplayMetrics mDisplayMetrics = new DisplayMetrics();//屏幕分辨率容器getWindowManager().getDefaultDisplay().getMetrics(mDisplayMetrics);int width = mDisplayMetrics.widthPixels;int height = mDisplayMetrics.heightPixels;float density = mDisplayMetrics.density;int densityDpi = mDisplayMetrics.densityDpi;Log.d(TAG,"Screen Ratio: ["+width+"x"+height+"],density="+density+",densityDpi="+densityDpi);Log.d(TAG,"Screen mDisplayMetrics: "+mDisplayMetrics);}// 通过Resources获取 public void getScreenDensity_ByResources(){DisplayMetrics mDisplayMetrics = getResources().getDisplayMetrics(); int width = mDisplayMetrics.widthPixels;int height = mDisplayMetrics.heightPixels;float density = mDisplayMetrics.density;int densityDpi = mDisplayMetrics.densityDpi;Log.d(TAG,"Screen Ratio: ["+width+"x"+height+"],density="+density+",densityDpi="+densityDpi);Log.d(TAG,"Screen mDisplayMetrics: "+mDisplayMetrics);}// 获取屏幕的默认分辨率 public void getDefaultScreenDensity(){Display mDisplay = getWindowManager().getDefaultDisplay(); int width = mDisplay.getWidth();int height = mDisplay.getHeight();Log.d(TAG,"Screen Default Ratio: ["+width+"x"+height+"]");Log.d(TAG,"Screen mDisplay: "+mDisplay);}
在Log中可以看到mDisplayMetrics的成员,其中
density为显示的逻辑分辨率;width及height就为屏幕分辨率(为绝对宽度与高度),与fields中的widthPixels及heightPixels一致;scaleDensity与density一致;xdpi及ydpi为准确物理像素。
更多相关文章
- Andriod界面设计适配和Android(安卓)Studio中的资源
- Android(安卓)资源,国际化,自适应
- android 屏幕分辨率问题
- Android屏幕计量单位详解
- Android中Bitmap类getPixel方法获取的像素值为负
- Android如何实现获取短信验证码的功能
- 获取Android设备硬件信息
- Android(安卓)1.6 支持更多的屏幕大小和分辨率
- Android屏幕适配全攻略(最权威的官方适配指导)Android屏幕适配出现