1. 程式人生 > >Android獲取裝置寬高,以及狀態列高度

Android獲取裝置寬高,以及狀態列高度

//獲取裝置寬度和高度
DisplayMetrics dm=new DisplayMetrics();WindowManager manager= (WindowManager) this.getSystemService(this.WINDOW_SERVICE);manager.getDefaultDisplay().getMetrics(dm);int height=dm.heightPixels;//裝置高度,是畫素值pxint width=dm.widthPixels;//裝置寬度,是畫素值pxfloat density= dm.density;//裝置密度,是densityDpi/160以後的值int
density2=dm.densityDpi;//裝置密度,每一寸的畫素點
//注意,返回的是畫素而不是dpi(dp)
public int getStateHeight(){
    int statusBarHeight2 = -1;
    try {
        Class<?> clazz = Class.forName("com.android.internal.R$dimen");
Object object = clazz.newInstance();
        int height = Integer.parseInt(clazz.getField("status_bar_height"
) .get(object).toString()); statusBarHeight2 = getResources().getDimensionPixelSize(height); } catch (Exception e) { e.printStackTrace(); } return statusBarHeight2; }
//轉換dip為px
public  float convertdpi2px( int dip) {
    float scale = this.getResources().getDisplayMetrics().density
; return (dip*scale + 0.5f*(dip>=0?1:-1)); }
//轉換px為dpi(dp)
public static int convertpx2dpi(Context context, int px) { float scale = context.getResources().getDisplayMetrics().density; return (int)(px/scale + 0.5f*(px>=0?1:-1));}