【问题标题】:Retrieve hidensity drawable from package (honeycomb)从包中检索高密度可绘制对象(蜂窝)
【发布时间】:2013-01-16 14:09:43
【问题描述】:

这段代码

final ApplicationInfo ai = getPackageManager().getApplicationInfo("com.company.hello", 0);
final Drawable d = getPackageManager().getApplicationIcon(ai);

即使在我的高密度 HoneyComb 设备上也可以检索 48x48 (mdpi) 可绘制对象。

鉴于我可以通过 Bitmap.createScaledBitmap 放大可绘制对象,我想问如何提取已经存在的高密度图标。 getDrawableForDensity 方法不适用于 sdk

编辑赏金

暂时忘记我的设备显示密度问题如下: 给定一个我们自己的包,我们知道它的相关 hdpi res 文件夹中有一个 72x72 图标,如何从另一个包中提取这个图标?

THIS FUNCTION 在 Honeycomb 环境中不可用。

【问题讨论】:

  • 拥有drawable后你用它做什么?在我看来,您可以使用图像的R.drawable.id 来获取它,它会自动为您当前运行的任何尺寸的屏幕抓取正确的图像。
  • 也许你把尺寸和密度混淆了(它们是不同的)。您不应该缩放 PNG 资源(这是使用不同分辨率可绘制对象的全部目的)。
  • 嗨 FoamGuy 我已经尝试按特定 ID 提取图标,但结果相同:48x48 可绘制。 Booger:我没有混淆任何东西:给定一个包,我想要我知道在那里的 72x72 可绘制对象。我的屏幕密度是 HI_DENSITY,解决方案可能是 getDrawableForDensity 但它不可用。

标签: android drawable android-3.0-honeycomb scaling


【解决方案1】:

要直接找到具有良好密度的可绘制对象,您只需尝试一下:

mContext.getResources().getDrawable(R.drawable.mydrawable);

有什么问题?如果 android 给你一个 48x48 的图标,那就是那个好图标,或者,你没有在好 res/drawable- 文件夹中设置图标。

【讨论】:

  • 是的,谢谢您的回答,但问题不在于 48x48 图标是否好,而是如何从包中提取所有分辨率图标,而不管设备密度如何。正如我已经使用 API > 15 编写的那样,可以使用完全满足我需要的函数(getDrawableForDensity),问题是如何在不使用此函数的情况下获得相同的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多