[英]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.