簡體   English   中英

如何在Android中獲取設備的高度和寬度

[英]How to get the device height and width in Android

我正在使用以下代碼獲取設備和高度。

screenHeight = getWindowManager()
                    .getDefaultDisplay().getHeight();
            screenWidth = getWindowManager()
                    .getDefaultDisplay().getWidth();

但是不推薦使用 getDefaultDisplay()。 所以我搜索了解決方案,我得到了以下解決方案。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            final WindowMetrics metrics = getWindowManager().getCurrentWindowMetrics();
            // Gets all excluding insets
            final WindowInsets windowInsets = metrics.getWindowInsets();
            Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars()
                    | WindowInsets.Type.displayCutout());

            screenWidth = insets.right + insets.left;
            screenHeight = insets.top + insets.bottom;
           
        }else{
            screenHeight = getWindowManager()
                    .getDefaultDisplay().getHeight();
            screenWidth = getWindowManager()
                    .getDefaultDisplay().getWidth();
        }

但是在這里我總是得到寬度和高度 126 的零。請幫我解決這個問題。

我也嘗試了以下代碼。 但沒有獲得確切的屏幕寬度和高度。

DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
            float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
            float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
            screenHeight =  convertDpToPixel(dpHeight,this);
            screenWidth = convertDpToPixel(dpWidth,this);

您需要進行如下更改 -

  DisplayMetrics displayMetrics = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
  int screenHeight = displayMetrics.heightPixels;
  int screenWidth = displayMetrics.widthPixels;
  double y = Math.pow(screenHeight /displayMetrics.xdpi, 2);
  double x = Math.pow(screenWidth /displayMetrics.xdpi, 2);
 

暫無
暫無

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

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