一大波干货来袭,屏幕尺寸各种获得,状态栏尺寸可正确获得,亲测。

packagecom.elyar.app.util.measure;importjava.lang.reflect.Field;importandroid.app.Activity;importandroid.util.DisplayMetrics;publicclassDisplayMeasure{/***Note:个人经验不服来辩<br>*只有activity可以使用getWindowManager,否则应该使用<br>*Context.getResources().getDisplayMetrics()来获取.<br>**@authorElyarAnwar2016-1-2921:24Aksu**/publicDisplayMeasure(){}/***获取屏幕尺寸,单位为像素*@paramcontextActivity的上下文*@return屏幕宽度单位PX*/publicstaticintgetScreenWidthPixel(Activitycontext){DisplayMetricsoutMetrics=newDisplayMetrics();context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);intwidthPixels=outMetrics.widthPixels;returnwidthPixels;}/***获取屏幕尺寸,单位为像素*@paramcontextActivity的上下文*@return屏幕高度单位PX*/publicstaticintgetScreenHeightPixel(Activitycontext){DisplayMetricsoutMetrics=newDisplayMetrics();context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);intheightPixels=outMetrics.heightPixels;returnheightPixels;}/***获取屏幕尺寸,单位为dp*@paramcontextActivity的上下文*@return屏幕宽度单位Dp*/publicstaticintgetScreenWidthInDp(Activitycontext){DisplayMetricsoutMetrics=newDisplayMetrics();context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);intwidthDp=outMetrics.widthPixels;returnChangeUnits.px2dp(context,widthDp);//将PX转换成Dp}/***获取屏幕尺寸,单位为dp*@paramcontextActivity的上下文*@return屏幕高度单位Dp*/publicstaticintgetScreenHeightInDp(Activitycontext){DisplayMetricsoutMetrics=newDisplayMetrics();context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);intheightDp=outMetrics.heightPixels;returnChangeUnits.px2dp(context,heightDp);}/***获取状态栏高度*@paramcontext上下文*@return状态栏高度单位像素*/publicstaticintgetStatusBarHeightPixel(Activitycontext){Class<?>c=null;Objectobj=null;Fieldfield=null;intx=0,statusBarHeight=0;try{c=Class.forName("com.android.internal.R$dimen");obj=c.newInstance();field=c.getField("status_bar_height");x=Integer.parseInt(field.get(obj).toString());statusBarHeight=context.getResources().getDimensionPixelSize(x);}catch(Exceptione1){e1.printStackTrace();}returnstatusBarHeight;}/***获取状态栏高度*@paramcontext上下文*@return状态栏高度单位dp*/publicstaticintgetStatusBarHeightInDp(Activitycontext){Class<?>c=null;Objectobj=null;Fieldfield=null;intx=0,statusBarHeight=0;try{c=Class.forName("com.android.internal.R$dimen");obj=c.newInstance();field=c.getField("status_bar_height");x=Integer.parseInt(field.get(obj).toString());statusBarHeight=context.getResources().getDimensionPixelSize(x);}catch(Exceptione1){e1.printStackTrace();}returnChangeUnits.px2dp(context,statusBarHeight);}}