首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android中以编程方式获取ScreenSize

如何在android中以编程方式获取ScreenSize
EN

Stack Overflow用户
提问于 2012-06-29 04:06:34
回答 12查看 97.7K关注 0票数 78

安卓将屏幕尺寸定义为正常的、大的、XLarge等。

它会自动在适当文件夹中的静态资源之间进行选择。我需要在我的java代码中包含关于当前设备的数据。DisplayMetrics仅提供有关当前设备密度的信息。没有任何关于屏幕大小的信息。

我确实在grep代码here中找到了ScreenSize枚举,但是这似乎不适用于4.0SDK。有没有办法获得这些信息?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-06-29 04:21:03

将此代码复制并粘贴到您的Activity中,当它被执行时,它将Toast设备的屏幕大小类别。

代码语言:javascript
复制
int screenSize = getResources().getConfiguration().screenLayout &
        Configuration.SCREENLAYOUT_SIZE_MASK;

String toastMsg;
switch(screenSize) {
    case Configuration.SCREENLAYOUT_SIZE_LARGE:
        toastMsg = "Large screen";
        break;
    case Configuration.SCREENLAYOUT_SIZE_NORMAL:
        toastMsg = "Normal screen";
        break;
    case Configuration.SCREENLAYOUT_SIZE_SMALL:
        toastMsg = "Small screen";
        break;
    default:
        toastMsg = "Screen size is neither large, normal or small";
}
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
票数 122
EN

Stack Overflow用户

发布于 2013-12-29 20:30:40

代码语言:javascript
复制
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 + "}";
}
票数 62
EN

Stack Overflow用户

发布于 2016-04-25 13:13:07

我认为这是一段非常简单的代码!

代码语言:javascript
复制
public Map<String, Integer> deriveMetrics(Activity activity) {
    try {
        DisplayMetrics metrics = new DisplayMetrics();

        if (activity != null) {
            activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
        }

        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("screenWidth", Integer.valueOf(metrics.widthPixels));
        map.put("screenHeight", Integer.valueOf(metrics.heightPixels));
        map.put("screenDensity", Integer.valueOf(metrics.densityDpi));

        return map;
    } catch (Exception err) {
        ; // just use zero values
        return null;
    }
}

这种方法现在可以在任何地方独立使用。无论您想要获取有关设备屏幕的信息,请执行以下操作:

代码语言:javascript
复制
        Map<String, Integer> map = deriveMetrics2(this);
        map.get("screenWidth");
        map.get("screenHeight");
        map.get("screenDensity");

希望这篇文章能对外面的人有所帮助,并且会发现它更容易使用。如果我需要重新更正或改进,请不要犹豫,让我知道!:-)

干杯!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11252067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档