如何:将hdpi资源加载到mdpi系统中

时间:2012-02-29 14:56:32

标签: android

我正在编写一个自定义启动器桌面,它使用2x3网格图标而不是标准的4x4网格。为了便于使用,我们还需要显示比正常情况更大的快捷方式图标。我可以通过创建调整大小的图标来实现这一目标,但显而易见的结果是像素化。我们正在开发的设备是MDPI,因此原始图标是48x48像素。

所以我的问题是:如果桌面上的应用程序有可用的HDPI或XHDPI资源,有没有办法加载这些资源呢?我没有看到绕过Android自动处理资源的明显方法。

1 个答案:

答案 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());
}