0

ショートカットを作成するアプリがあります。ショートカット アイコンを動的に生成するため、正しいランチャー アイコンのサイズを知る必要があります。

これを処理するために、アイコンのサイズをそれぞれ 36/48/72/96/144pxに作成dimens.xmlして定義しました。values-ldpi/mdpi/hdpi/xhdpi/xxhdpi

このスキームは、10 インチの xhdpi タブレット (nexus 10 など) を除いて機能します。これらのタブレットは、xhdpi 画面があるにもかかわらず、144px (xxhdpi) のランチャー アイコン サイズを使用しているようです。

10 インチの xhdpi タブレットを考慮したランチャー アイコンのサイズを正しく検出する方法はありますか? または、アイコンのサイズを正しく設定するためのより良いスキームはありますか? または、このケースを単純な xhdpi ケースと区別する方法はありますか?

4

1 に答える 1

1

ランチャー アイコンのサイズを取得するには、ActivityManager.getLauncherLargeIconSize()上記の CommonsWare で提案されているように呼び出すだけです。わずかな問題点の 1 つは、これが 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 に答える