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

此代码会将图标读入drawable。在该特定包中将出现 2 个图标,一个 res-hdpi 图标和一个 res-xhdpi 图标。使用上面的方法,只会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 回答