簡體   English   中英

有沒有辦法獲得dpi的屏幕尺寸

[英]Is there a way to get screen size in dpi

我正在使用這個:

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

獲取以像素為單位的屏幕尺寸。 有沒有辦法獲得dpi的屏幕尺寸?

我這樣做是根據屏幕尺寸選擇不同的布局。

有沒有辦法獲得以dpi為單位的電子屏幕尺寸???

DisplayMetrics可以告訴您屏幕大小(以像素為單位)以及屏幕密度。 從那里,您可以計算dp的屏幕大小。

我這樣做是根據屏幕尺寸選擇不同的布局。

如果您將布局放在正確的目錄中(例如res/layout-large/res/layout-sw600dp/ ),那么資源框架會自動為您處理。

您必須創建指標對象並在下面執行

 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方法設置上下文,並根據您的目的調用最佳方法,例如此代碼,此代碼位於主要活動的oncreateView上:

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

“以dpi為單位的屏幕尺寸”是毫無意義的陳述。 您是否只想獲取顯示器的DPI?

其次, 不要這樣做

認真一點,停下來。 不要這樣

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

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

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

這是一種以像素為單位計算屏幕的寬度和高度的方法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM