1

ホーム画面のようなアプリの場合、可能な限り最高の解像度のアプリアイコンを収集しようとしています。ホーム画面にはアイコンが少し大きく表示されるため、高解像度のアイコンが必要です。

これは私のコードです:

final PackageManager pk = getPackageManager();
final String size;
try {
    Drawable d = pk.getApplicationIcon("com.mycompany.android.icontest");
    size = String.format("Width: %d, height: %d", d.getMinimumWidth(), d.getMinimumHeight());
} catch (PackageManager.NameNotFoundException e) {
    return;
}

このコードは、アイコンをドローアブルに読み込みます。その特定のパッケージには、res-hdpiアイコンとres-xhdpiアイコンの2つのアイコンが表示されます。上記の方法を使用すると、HDPIバージョンのみが読み取られます。

XHDPIデフォルトでバージョンを読み取る方法は?

4

1 に答える 1

6

getDrawableForDensity()を使用して、DPIで指定された画面密度の特定のリソースIDに関連付けられたドローアブルオブジェクトを返すことができます。

ActivityInfo info = packageManager.getActivityInfo(componentName, PackageManager.GET_META_DATA);

Resources resources;
try {
    resources = mPackageManager.getResourcesForApplication(
            info.applicationInfo);
} catch (PackageManager.NameNotFoundException e) {
    resources = null;
}

if (resources != null) {
    int iconId = info.getIconResource();
    if (iconId != 0) {
        Drawable d;
        try {
            d = resources.getDrawableForDensity(iconId, DisplayMetrics.DENSITY_XHIGH);
        } catch (Resources.NotFoundException e) {
            d = null;
        }
        return d;
    }
}
于 2013-06-10T03:15:06.117 に答える