Android正確獲取螢幕畫素和密度等
阿新 • • 發佈:2018-12-11
Android如何準確獲取螢幕寬高、密度。
需要注意在不同版本有點區別,4.2增加虛擬導航欄,導致舊的方法獲取的螢幕高度不包括導航欄。所以需要區分版本去獲取。
順便提下,
這貨WindowManager windowManager = activity.getWindowManager()
跟這貨WindowManager windowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
進去看下原始碼就知道,其實是一樣的。只不過在Activity下才有這方法getWindowManager。
package com.dway.common.utils; import android.app.Activity; import android.content.Context; import android.os.Build; import android.util.DisplayMetrics; import android.util.Log; import android.view.WindowManager; /** * 獲取螢幕的寬高畫素和密度等工具類 */ public class DisplayUtil { private static final String TAG = "DisplayUtil"; public static DisplayMetrics getDisplayMetrics(Activity activity){ DisplayMetrics displayMetrics = new DisplayMetrics(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { //4.2開始有虛擬導航欄,增加了該方法才能準確獲取螢幕高度 activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics); }else{ activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); //displayMetrics = activity.getResources().getDisplayMetrics();//或者該方法也行 } return displayMetrics; } public static DisplayMetrics getDisplayMetrics(Context context){ WindowManager windowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics displayMetrics = new DisplayMetrics(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { windowManager.getDefaultDisplay().getRealMetrics(displayMetrics); }else{ windowManager.getDefaultDisplay().getMetrics(displayMetrics); } return displayMetrics; } public static void printDisplayMetrics(Activity activity){ DisplayMetrics displayMetrics = getDisplayMetrics(activity); Log.v(TAG,"---printDisplayMetrics---" + "widthPixels=" + displayMetrics.widthPixels + ", heightPixels=" + displayMetrics.heightPixels + ", density=" + displayMetrics.density + ", densityDpi="+displayMetrics.densityDpi); } public static void printDisplayMetrics(Context context){ DisplayMetrics displayMetrics = getDisplayMetrics(context); Log.v(TAG,"---printDisplayMetrics---" + "widthPixels=" + displayMetrics.widthPixels + ", heightPixels=" + displayMetrics.heightPixels + ", density=" + displayMetrics.density + ", densityDpi="+displayMetrics.densityDpi); } }