【问题标题】:Display Width and height of device got changed on changing orientation for Finding aspect ratio of an android device设备的显示宽度和高度在更改方向以查找 android 设备的纵横比时发生更改
【发布时间】:2016-07-30 14:09:53
【问题描述】:

您好,我发现关于更改方向纵向的平板电脑的像素宽度和高度计算问题,其中宽度 = 800 和高度 = 1200 在横向模式下更改为宽度 = 1165 和高度 = 790 为什么会出现这种差异 我正在使用此代码

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

【问题讨论】:

  • 这可能与您的查询无关,但是为了获得显示高度和宽度,我发现简单地使用我的视图更容易。例如:如果我知道某个特定视图占用了整个屏幕宽度,我只需调用getWidth() 即可。像魅力一样工作。

标签: android


【解决方案1】:

是的,这是可能的,因为您的设备硬件按钮也占用了一些屏幕尺寸。

【讨论】:

    【解决方案2】:

    我想这是因为有一些限制在横向比纵向保留一些空间。

    【讨论】:

      【解决方案3】:

      在您的 onConfigurationChanged 中获取视图的高度和宽度,而不是设备指标

       final View view = findViewById(R.id.yourView);
      
          ViewTreeObserver observer = view.getViewTreeObserver();
          observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
      
              @Override
              public void onGlobalLayout() {
                  Log.v(TAG,""+ view.getWidth()+" "+
                                  view.getHeight());
                  view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
              }
          });
      

      【讨论】:

        【解决方案4】:

        这可能意味着一些事情:

        • 应用有菜单栏/状态栏。
        • 手机有按钮栏。

        还有其他一些事情。 (例如调整应用程序的大小)

        要获取手机的绝对屏幕尺寸,请使用以下代码:

        Display display = getWindowManager().getDefaultDisplay(); 
        int width = display.getWidth();
        int height = display.getHeight();
        

        就是这样。

        【讨论】:

          猜你喜欢
          • 2017-01-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-27
          • 1970-01-01
          • 2017-02-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多