首页 文章

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

提问于
浏览
0

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

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

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

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

谢谢 .

1 回答

  • 1

    回答我自己的问题 .

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

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

相关问题