2013-07-10 118 views
0

如果Android設備的屏幕大小被視爲小(320dp x 426dp單位),我需要禁用應用程序中的某個按鈕。我目前正在使用:在Android中檢測屏幕大小

if (activity.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) { 
    //Is small size 
} else { 
    //Is not small size 
} 

,以確定設備的屏幕尺寸,但是這似乎從來沒有進入Configuration.SCREENLAYOUT_SIZE_SMALL條件。我做了打印輸出,發現這個值實際上相當於Configuration.SCREENLAYOUT_SIZE_NORMAL

Alex Lockwood在這裏的答案是:How do I get the ScreenSize programmatically in android是我對這個解決方案的參考,但是正如J R P在他的回答中指出的那樣,一切似乎都等同於我的Configuration.SCREENLAYOUT_SIZE_NORMAL

如何可靠地定義設備的屏幕尺寸?我目前正在三星Galaxy S3上進行測試,並且無論如何這應該是一個「小」設備。

由於提前, 川

+0

而不是做以上,你爲什麼不創建LDPI和MDPI不同的佈局?在ldpi中,您不會包含按鈕,並且在代碼中您將檢查該按鈕是否存在於佈局中。 – gunar

+0

有一個(在您的代碼中缺少 – njzk2

+0

因爲它不是屏幕像素密度我看着更多的屏幕尺寸... – Wakka02

回答

0

使用下面的代碼。

public boolean isPhone(Context activityContext) { 

if(null!=activityContext) 
{ 
    boolean xlarge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4); 
    boolean large = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); 
    return (xlarge || large)?false:true; 
} 
return false;  
} 
0

這是你可以用它來檢查,如果你正在運行在智能手機應用程序,或使用它tablet.This是100%的功能的方法。

public boolean isNormalOrSmallResolution() { 
    boolean isNormalOrSmallResolution = false; 
    if (context != null) { 
     if (((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) 
       || ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL)) { 
      isNormalOrSmallResolution = true; 
     } 
    } 
    return isNormalOrSmallResolution; 
} 
1

來了兩個函數來獲取屏幕尺寸W和H

public static int getScreenSizeW(Context context) { 
      int screenSizeW = 320;//default 

      DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); 
      try { 
       screenSizeW = DisplayMetrics.class.getField("widthPixels").getInt(displayMetrics); 
      } catch (Exception e) { 
      } 

      return screenSizeW; 
     } 

public static int getScreenSizeH(Context context) { 
      int screenSizeH = 480;//default 

      DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); 
      try { 
       screenSizeH = DisplayMetrics.class.getField("heightPixels").getInt(displayMetrics); 
      } catch (Exception e) { 
      } 

      return screenSizeH; 
     } 

,並在這裏談到另一種方式讓顯示尺寸:

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
size.x = display.getWidth(); 
size.y = display.getHeight(); 
4

嘗試使用此方法顯示尺寸像素

Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    int width = size.x; 
    int height = size.y; 

多使用此StackQuestion

1

試試這個代碼..

int screenSize = getResources().getConfiguration().screenLayout & 
     Configuration.SCREENLAYOUT_SIZE_MASK; 

String toastMsg; 
switch(screenSize) { 
    case Configuration.SCREENLAYOUT_SIZE_LARGE: 
     toastMsg = "Large screen"; 
     break; 
    case Configuration.SCREENLAYOUT_SIZE_NORMAL: 
     toastMsg = "Normal screen"; 
     break; 
    case Configuration.SCREENLAYOUT_SIZE_SMALL: 
     toastMsg = "Small screen"; 
     break; 
    default: 
     toastMsg = "Screen size is neither large, normal or small"; 
} 
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show(); 

Also have a look at