0

将我的 Eclipse 项目切换到 Android Studio。我只在 drawable-mdpi 文件夹下维护资源。现在在工作室中,XML 的预览可以正确加载图像。但是,当我在分辨率高于 mdpi 的设备中运行应用程序时,应用程序崩溃,显示错误膨胀二进制 XML。经过长时间的分析,我发现该设备试图从其不可用的相应密度文件夹加载图像的问题。所以我创建了文件夹 drawable-xhdpi 并将图像放在该文件夹中。现在该应用程序运行良好。为什么 android studio 不能从其他密度可绘制文件夹中选择图像并调整大小,这可以通过 Eclipse 实现。我无法维护 5 个不同的可绘制文件夹,因为有很多图像。

4

3 回答 3

0

您必须添加“drawable-hdpi”资源目录并将所有 hdpi 资源粘贴到那里,因为目前 70% 的 android 设备支持 hdpi 分辨率图像。

如果你只维护hdpi,那也可以。android 管理来自 hdpi 资源目录的所有剩余资源。

于 2016-08-24T06:14:10.360 回答
0

Android应用资源目录为不同的屏幕尺寸和不同的drawable提供不同的布局设计。android 使用这些不同的drawable 来支持现有的所有android 设备的主要范围。将您的资源考虑到这些密度是一种标准做法。回到您的查询:

为什么 android studio 不能从其他密度可绘制文件夹中选择图像并调整大小,这可以通过 Eclipse 实现。我无法维护 5 个不同的可绘制文件夹,因为有很多图像。

对于您的情况,为了保持这一点,您可以使用 nodpi 创建一个可绘制对象并将所有资源放在那里。nodpi 专注于所有密度的资源。您的资源应该是与密度无关的资源。无论当前屏幕的密度如何,系统都不会缩放带有此限定符标记的资源。

希望这能消除您的疑虑,更多的见解您也可以看看这个

于 2016-08-24T06:31:36.200 回答
0

您不需要将所有图像添加到每个不同大小的文件夹,但根据图像的大小,您可能需要将图像添加到不同的文件夹。

简单的例子是,一旦您在普通的 drawble 文件夹中添加高分辨率/尺寸的图像,就会发生这种情况

Skipped 100 frames!  The application may be doing too much work on its main thread. 

这可能不会使您的应用程序崩溃,但会降低其性能。

后来为Android添加了不同的密度文件夹,这意味着......

如果您想偷懒并且只添加一项资产,那么最好的选择可能是 HDPI 资产(如果您的最小应用程序目标 < 8 和 XHDPI 如果其 >= 8)。这是因为系统会向上和向下扩展资源,但是您仍然希望以可能的最高分辨率开始。

如果您想完全控制资产的缩放方式,那么您可以通过各种方式为所有/部分密度提供您自己的。在实践中,我通常如上所述提供 HDPI / XHDPI,并为徽标 / AB 图标 / 应用程序图标等提供所有资源桶。我通常发现自动缩放非常好,适用于大多数情况,但偶尔需要提供和额外的 LD/MD 资产,如果它是一个小资产/包含小文本等。另外,如果我为 XXXHDPI 之类的东西复制所有资产,我会得到相当不错的 apk 膨胀。

您还可以使用内置工具的 IDE 一次为多个密度添加单个资产。在 Android Studio 0.6 中,这是 File->New->Image Asset 并且会出现一个向导。

我从未注意到或听说过允许 Android 自动扩展资产对性能的任何影响——大概这是在硬件中完成的。

当自动缩放到 LDPI 时,它可能看起来不太好,因此您可以选择为所有其他密度提供自己的缩放资产。

取自:https ://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

我们是否需要将所有具有不同 dpi 的图像添加到 Android 应用程序

于 2016-08-24T06:33:08.463 回答