【问题标题】:android displaymetrics returns 2/3 of screensizeandroid displaymetrics 返回 2/3 的屏幕尺寸
【发布时间】:2014-02-06 05:36:11
【问题描述】:

我使用 displaymetrics 来获取设备的屏幕尺寸。在智能手机中效果很好,但在平板电脑中它返回屏幕宽度和高度的 2/3。谁能告诉我这是为什么?

代码如下:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenheight = metrics.heightPixels;
int screenwidth= metrics.widthPixels;

【问题讨论】:

    标签: android android-screen


    【解决方案1】:

    改用getRealMetrics()

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
    

    这个 API 是在 API 17 中正式添加的,但在我有限的测试中,即使在 4.0 设备上它也能正常工作,所以在此之前它可能是一个隐藏的 API。

    官方文档here,尽管似乎有更多的原因表明其他 API 没有按照您的预期做,而不是那里的文字所暗示的。

    如果有 ICS 设备无法使用此 API,您还可以尝试提到的后备方案 here

    【讨论】:

      【解决方案2】:

      您没有按密度缩放。

      试试这个:

      int screenHeight = metrics.heightPixels * getResources().getDisplayMetrics().density;
      int screenWidth = metrics.widthPixels * getResources().getDisplayMetrics().density;
      

      还有

      (WindowManager) context.getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getWidth();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-03
        • 2015-09-10
        相关资源
        最近更新 更多