是否可以在Android中访问特定密度的drawable?

时间:2011-10-17 11:22:57

标签: android drawable

根据具体情况,我通常对我的app支持的每个密度都有一个drawable,当我使用一些drawable的id引用时,会使用正确的密度drawable。

但无论设备上运行的密度如何,我都希望从特定密度(例如ldpi)访问drawable。但我希望在特定的情况下,而不是在任何地方,这会破坏为每个密度设置多个可绘制的目的。

这可能吗?

3 个答案:

答案 0 :(得分:1)

以下是我用来从其他应用加载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());

}

答案 1 :(得分:0)

我不知道这是否可能,但作为一个简单的逻辑。

您只需制作该ldpi drawable的副本并将其命名为mypic2并将其保存在ldpi文件夹中

现在,您的xml或activity会根据您的特定情况提供新mypic2的参考

答案 2 :(得分:-1)

如果它是一个特定的drawable,那么只需将它放在ldpi文件夹中。如果在任何更合适的密度文件夹中找不到它,运行时将从那里拾取它。