0

我有一个创建快捷方式的应用程序。它动态生成快捷方式图标,所以我需要知道正确的启动器图标大小。

为了解决这个问题,我创建并将我dimens.xmlvalues-ldpi/mdpi/hdpi/xhdpi/xxhdpi图标大小分别定义为 36/48/72/96/144px。

此方案有效,但在 10 英寸 xhdpi 平板电脑(如 nexus 10)上除外。尽管有 xhdpi 屏幕,但这些平板电脑似乎使用大小为 144px (xxhdpi) 的启动器图标。

有没有一种方法可以正确检测考虑到 10 英寸 xhdpi 平板电脑的启动器图标大小?或者是否有更好的方案来正确调整我的图标大小?或者有没有办法将这种情况与简单的 xhdpi 情况区分开来?

4

1 回答 1

1

要获取启动器图标大小,只需ActivityManager.getLauncherLargeIconSize()按照上面 CommonsWare 的建议进行调用。一个小问题是这仅在 API 11+ 上可用。在这种情况下,回退到使用DisplayMetrics. 如果有一个运行 android 2 的 10" XHDPI 设备,这当然会失败,这是极不可能的(因为 X*HDPI 在 Android 2 时不存在)。这是我写的实用方法,

@SuppressLint("NewApi")
private int getLauncherIconSize() {
    int size = 48;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActivityManager mgr = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
        size = mgr.getLauncherLargeIconSize();
    } else {
        DisplayMetrics metrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
        switch (metrics.densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            size = 36;
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            size = 48;
            break;
        case DisplayMetrics.DENSITY_HIGH:
            size = 72;
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            size = 96;
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            size = 144;
            break;
        }
    }

    return size;
}
于 2013-01-25T02:12:07.543 回答