Android開發過程中經常會遇到擷取手機螢幕寬高的需求,下面就擷取螢幕寬高的方法總結如下:
方法1:利用WindowManager擷取
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 螢幕寬(像素,如:720px)
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 螢幕高(像素,如:1280px)
注:此方法已經過時,有新的API對其進行替代,并且在自定義控件的某些時候(例如繼承LinearLayout的類中),由于無法得到WindowManager對象而無法利用此方法
方法2:利用DisplayMetrics對象擷取
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // 螢幕密度(像素比例:0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // 螢幕密度(每寸像素:120/160/240/320)
screenWidth = dm.widthPixels; // 螢幕寬(像素,如:3200px)
screenHeight = dm.heightPixels; // 螢幕高(像素,如:1280px)
方法3:WindowManager和DisplayMetrics的結合
DisplayMetrics dm = new DisplayMetrics();
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density; // 螢幕密度(像素比例:0.75/1.0/1.5/2.0)
densityDPI = dm.densityDpi; // 螢幕密度(每寸像素:120/160/240/320)
int screenWidthDip = dm.widthPixels; // 螢幕寬(dip,如:320dip)
int screenHeightDip = dm.heightPixels; // 螢幕寬(dip,如:533dip)
screenWidth = (int)(dm.widthPixels * density + 0.5f); // 螢幕寬(px,如:720px)
screenHeight = (int)(dm.heightPixels * density + 0.5f); // 螢幕高(px,如:1280px)