天天看點

Android開發中擷取螢幕寬高的幾種方法

        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)