gpt4 book ai didi

java - 在 s8+ 上查找实际可用的屏幕高度

转载 作者:行者123 更新时间:2023-11-30 10:21:18 25 4
gpt4 key购买 nike

我正在为 Android 设备开发应用程序,并希望支持具有 FHD+ 分辨率的 samsung galaxy s8+。但是,当我在 logcat 中记录模拟器的 height 时,我得到的是 2124x1080(对于 FHD+)而不是 *2220*x1080。那是由于导航栏和状态栏吗?如果是这种情况,我如何确保在 logcat 中获得正确的 height

我为 widthheight 使用的代码很简单:

    DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int height = dm.heightPixels;
int width = dm.widthPixels;

最佳答案

首先,我有点困惑你从哪里得到这些值(2200 和 1080)

根据 Google 的设备指标 (https://material.io/devices/),三星 Galaxy S8+ 的尺寸为 1440*2960)

除此之外,您在上面提供的代码似乎返回屏幕高度,减去导航栏和状态栏。如果你想找到这两个 UIElement 的高度,按照下面的代码。

导航栏

public int getNavBarHeight() { 
int result = 0;
int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
return result;
}

状态栏

public int getStatusBarHeight() { 
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
return result;
}

上面的代码返回像素值,如果你想把它们转换成dp,使用这个方法:

public int pxToDp(int px) {
DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
return Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}

关于java - 在 s8+ 上查找实际可用的屏幕高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47944656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com