2013-03-04 52 views
1

我使用這個:有沒有辦法讓屏幕大小以dpi

int wi=getWindowManager().getDefaultDisplay().getWidth(); 

得到屏幕尺寸以像素爲單位。有沒有辦法讓屏幕尺寸在dpi

我正在根據屏幕大小選擇不同的佈局。

回答

3

有沒有一種方法可以在dpi上獲得escreen尺寸?

DisplayMetrics可以告訴你以像素爲單位的屏幕大小加上屏幕密度。從那裏,你可以計算出dp的屏幕尺寸。

我正在根據屏幕大小選擇不同的佈局。

這是你由資源框架自動處理的,如果你把你的佈局在正確的目錄中(例如,res/layout-large/res/layout-sw600dp/)。

0

「屏幕尺寸以dpi爲單位」是無意義的陳述。你只想得到顯示器的DPI?其次,不要這樣做

說真的,停下來。不要這樣做。

按照預期使用佈局文件夾。如果您需要HDPI的不同佈局,請將您的自定義佈局放入layout-hdpi

這就是說,如果你只需要密度:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindow().getDisplayMetrics(metrics); 
int dpi = metrics.densityDpi; 
+0

嗨,是的我試圖讓屏幕尺寸爲不同的佈局。現在我有3個佈局,並使用一個如果他們來決定什麼樣的佈局加載,你能解釋更多關於使用不同佈局的文件夾,似乎更好,那麼我在做什麼 – 2013-03-05 12:52:19

+0

@Tedpottel檢查[本頁](http:///developer.android.com/guide/topics/resources/providing-resources.html),這將更詳細地解釋它。 – kcoppock 2013-03-05 17:36:37

0

這裏是計算像素屏幕寬度和高度的方式。

int widthPixels = getWindowManager().getDefaultDisplay().getWidth(); 
int heightPixels = getWindowManager().getDefaultDisplay().getHeight(); 

float scale = getApplicationContext().getResources().getDisplayMetrics().density; 

int width = (int) (widthPixels - 0.5f)/scale; //width of screen in dpi 
int height = (int) (heightPixels - 0.5f)/scale; //height of screen in dpi 
0

您必須創建度量對象,並做到以下

public class LocalUtil extends Application { 
private static Context context1; 
private static DisplayMetrics metrics; 
public static void setContext(Context context) 
{ 

     context1=context; 
     metrics=context1.getResources().getDisplayMetrics(); 
} 
public static float getDensity() 
{ 
    return metrics.density; 
} 
public static int getScreenWidth() 
{ 
    return metrics.widthPixels; 
} 
public static int getScreenHeight() 
{ 
    return metrics.heightPixels; 
} 
public static float getScreenWidthInDpi() 
{ 
    return metrics.widthPixels/metrics.density; 
} 
public static float getScreenHeightInDpi() 
{ 
    return metrics.heightPixels/metrics.density; 
} 

和每一個你想用這種方法,你可以設定setcontext方法上下文和調用最佳的方法與你的目的 這樣的代碼驗證碼is oncreate查看主要活動:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    LocalUtil.setContext(getApplicationContext()); 
    LocalUtil.getScreenWidthInDpi(); 
    //or call each method you want 
    } 
相關問題