【问题标题】:(Android)Unable to get the correct screen width for some devices(Android)无法为某些设备获取正确的屏幕宽度
【发布时间】:2014-06-15 14:42:55
【问题描述】:
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    screen_width = display.getWidth();
    screen_height = display.getHeight();

我知道上面的代码可以驱使我获取屏幕宽度和高度。我把这段代码放在“MainActivity”的“onCreate”中。

但我朋友的移动设备无法显示所需的布局。然而,在他的移动设备上调试对我来说太麻烦了。因此,我期待这里的帮助。

我的问题是……

在“onCreate”中获取宽度和高度是否正确? 获取所有设备的宽度和高度有用吗? (当然,API>=11)

【问题讨论】:

    标签: android screen


    【解决方案1】:

    是的,在 onCreate() 方法中获取屏幕高度和宽度是正确的,因为如果您的屏幕旋转,那么您的 onCreate 将被调用。并且如果需要,您应该采用屏幕高度和宽度不是强制性的,否则您也可以在 Xml 中管理它。要获得屏幕高度和宽度,我认为这是最好的方法...

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

    有关更多详细信息,您也可以使用此链接 http://developer.android.com/reference/android/view/Display.html

    【讨论】:

      【解决方案2】:

      您可以尝试使用指标:

          DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
          int displayHeight = metrics.heightPixels;
          int displayWidth = metrics.widthPixels;
      

      在 onCreate 中执行应该没问题。
      但老实说,我不认为你真的得到了错误的高度和宽度。屏幕尺寸可能与您的测试设备非常不同。 您至少需要用他的手机调试一次,才能找出问题所在。
      在我看来,这是获取宽度和高度的好方法,因为它为您提供了更多控制权。大多数布局可以通过使用适当的布局来完成(例如带有权重的LinearLayouts),但在某些情况下手动完成会更好。您可以更精确地做事,但工作量会更大。
      此外,如果您没有大量用于测试的设备,则很难正确调整它。想想 Android 世界可能遇到的所有不同大小。例如,我在使用非常小的设备时遇到了一些问题,比如 Galaxy Mini。像平板电脑这样的大型设备也可能是一个问题。如果您想手动进行测试,就没有办法测试边缘情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-10
        • 2016-06-28
        • 2012-12-17
        • 1970-01-01
        • 2012-04-18
        • 1970-01-01
        相关资源
        最近更新 更多