android 10“xhdpi平板电脑启动器图标大小

时间:2013-01-25 00:00:33

标签: android android-launcher android-icons

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

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

这个方案有效,除了10英寸,xhdpi平板电脑(如nexus 10)。看来这些平板电脑使用的启动器图标大小为144px(xxhdpi),尽管有xhdpi屏幕。

有没有办法正确检测启动器图标大小,考虑到10“xhdpi平板电脑?或者是否有更好的方案可以正确设置我的图标大小?或者是否有办法区分这种情况与简单的xhdpi情况?

感谢。

1 个答案:

答案 0 :(得分:1)

回答我自己的问题。

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

@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;
}