在s8 +

时间:2017-12-22 16:35:34

标签: java android android-studio android-logcat samsung-galaxy

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

我用于widthheight的代码很简单:

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

1 个答案:

答案 0 :(得分:1)

首先,我对于从(2200和1080)

获取这些值的位置感到有些困惑

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

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

导航栏

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));
}