2011-10-17 31 views
2

根据当然的情况,我通常会为我的应用程序支持的每个密度绘制一个drawable,并且在使用某个drawable的id引用时使用正确的可绘制密度。是否有可能从Android中的特定密度访问drawable?

但是我正在寻找从特定密度(例如ldpi)访问drawable,无论设备上运行的密度如何。但是我想要一个特定的情况,而不是在任何地方,这将打败为每个密度绘制多个drawable的目的。

这可能吗?

回答

0

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

您只需制作一张副本,并将其命名为mypic2并将其保存在ldpi文件夹中。

现在从您的xml或活动给在您的具体情况新的mypic2的参考。

+2

我需要的drawable已经存在,所以我创建了一个副本并增加了我的应用程序的大小?这正是我想要避免的... –

+0

你好我知道你试图尽量减少内存使用..但需要做一些更多的学习,.. ..现在我高压没有其他解决方案 – MKJParekh

+0

我想这是唯一可能的解决方案,所以我'标记为接受。如果其他人想出更好的解决方案,我会改变它。 –

-1

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

+0

不,它可以从一组预定义的任何绘制(但它的很多可绘制的)和我有一个可用的每个密度可用。我只需要访问在特定情况下可绘制的特定密度。 –

1

这是我用来从另一个应用程序加载华电国际绘制(仅适用于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()); 

} 
相关问题