我正在编写一个自定义启动器桌面,它使用2x3网格图标而不是标准的4x4网格。为了便于使用,我们还需要显示比正常情况更大的快捷方式图标。我可以通过创建调整大小的图标来实现这一目标,但显而易见的结果是像素化。我们正在开发的设备是MDPI,因此原始图标是48x48像素。
所以我的问题是:如果桌面上的应用程序有可用的HDPI或XHDPI资源,有没有办法加载这些资源呢?我没有看到绕过Android自动处理资源的明显方法。
答案 0 :(得分:3)
这是我用来从其他应用程序加载hdpi drawable图标的解决方案(仅适用于Android 4.0):
PackageInfo pi = packages.get(i);
ai = new AppListAdapter.AppItem();
try {
Context otherAppCtx = getApplicationContext().createPackageContext(pi.applicationInfo.packageName, CONTEXT_IGNORE_SECURITY);
ai.Icon = otherAppCtx.getResources().getDrawableForDensity(pi.applicationInfo.icon, DisplayMetrics.DENSITY_HIGH);
} catch (Exception e) {
ai.Icon = pi.applicationInfo.loadIcon(getPackageManager());
}