【问题标题】:Get screen resolution of device获取设备的屏幕分辨率
【发布时间】:2016-07-27 13:58:58
【问题描述】:

我使用以下方法获取屏幕尺寸:

public static Point getScreenSize(Context context)
{
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    int w = wm.getDefaultDisplay().getWidth();
    int h = wm.getDefaultDisplay().getHeight();
    return new Point(w, h);
}

在我的三星 Galaxy s6 上,此方法返回 1080x1920...虽然我的设备分辨率为 1440x2560。

为什么?有没有更好的方法可以让新手机的屏幕分辨率也可靠?

编辑

我在服务中需要这个方法!我没有寻求帮助的视图/活动,只有应用程序上下文!我需要真正的像素

【问题讨论】:

  • 我有一个滚动视图作为我需要它的活动之一的根。我只是用来获取scroll.getHeight()scroll.getWidth() 就可以了。完全没有麻烦,非常完美。
  • 检查此帖子中的答案之一:stackoverflow.com/questions/8309354/…。应该有一个对您的情况有效。
  • 我相信 getWidth()getHeight() 已被弃用,取而代之的是 Point

标签: android resolution screen-resolution


【解决方案1】:

获取屏幕分辨率的最佳方法是来自DisplayMetrics

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

【讨论】:

  • 不,因为 getMetrics 减去装饰尺寸。使用 getRealSize()
【解决方案2】:

如果您的目标 API >= 17,请尝试使用 Display 类的 getRealSize 方法:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point size = new Point();
wm.getDefaultDisplay().getRealSize(size);
String resolution = size.x + "x" + size.y;

对我来说,它有效。

【讨论】:

    【解决方案3】:

    使用这个:

    private static String getScreenResolution(Context context)
    {
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();
        DisplayMetrics metrics = new DisplayMetrics();
        display.getMetrics(metrics);
        int width = metrics.widthPixels;
        int height = metrics.heightPixels;
    
        return "{" + width + "," + height + "}";
    }
    

    【讨论】:

    • 返回相同的值...我真的需要知道设备的实际物理尺寸
    • 您无法在所有设备中获取设备物理尺寸,因为这也取决于设备。 IE。检查两个设备 Nexus 5 Lenovo K3 两个尺寸都是 1080X1920 但是当你调用上面的函数时会得到不同的值。因此您可以使用设备检查硬件按钮并将这些高度与设备高度相匹配,以便最终您可以获得制造商在产品上显示的实际物理尺寸。
    • 我怎样才能从我的课堂上调用这个方法
    • WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);显示显示 = wm.getDefaultDisplay(); DisplayMetrics 指标 = new DisplayMetrics(); display.getMetrics(指标); int宽度=metrics.widthPixels; int height = metrics.heightPixels;
    【解决方案4】:

    API 返回应用程序可以使用的像素数,因此这是正确的结果。

    【讨论】:

      【解决方案5】:

      Use this.

      DisplayMetrics metrics; 
      int width = 0, height = 0;
      

      In your onCreate method.

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

      【讨论】:

      • 返回相同的值...我真的需要知道设备的实际物理尺寸
      【解决方案6】:

      试试这个:

       Display mDisplay = context.getWindowManager().getDefaultDisplay();
      
       mDisplay.getWidth();
       mDisplay.getHeight();
      

      请注意,此代码使用已弃用 API。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多