是否可以在 Android 中访问特定密度的可绘制对象?

发布于 2024-12-10 08:14:42 字数 187 浏览 0 评论 0原文

当然,根据具体情况,我通常为我的应用程序支持的每种密度都有一个可绘制对象,并且当我使用某些可绘制对象的 id 引用时,会使用正确的密度可绘制对象。

但我希望从特定密度(例如 ldpi)访问可绘制对象,无论设备上运行的密度如何。但我希望在特定情况下这样做,而不是在任何地方,这会违背为每个密度提供多个可绘制对象的目的。

这可能吗?

Depending on the situation of course, I normally have a drawable for each density my app supports and the right density drawable is used when I use an id reference of some drawable.

But I'm looking to access a drawable from a specific density (for example, ldpi) no matter the density running on the device. But I want this on a specific situation, not everywhere, that would defeat the purpose of having multiple drawables for each density.

Is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不甘平庸 2024-12-17 08:14:42

这是我用来从另一个应用程序加载 hdpi 绘图的方法(仅适用于 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());

}

Here is what I used to load a hdpi drawable from another app (works only with 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());

}
国粹 2024-12-17 08:14:42

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

您只需复制该 ldpi 可绘制对象并将其命名为 mypic2 并将其保存在 ldpi 文件夹中

现在,从您的 xml 或活动中在您的具体情况下提供新 mypic2 的引用

I dont know that it is possible or not but as a simple logic.

You just make a copy of that ldpi drawable and name it mypic2 and keep it in ldpi folder.

now from your xml or activity give the reference of that new mypic2 at your specific situation.

污味仙女 2024-12-17 08:14:42

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

If it's one specific drawable, then just have it in the ldpi folder. The runtime will pick it up from there if it can't find it in any of the more appropriate density folders.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文