2

在我的应用程序中,我遇到了一个惊人的问题。

当我anyDensity在清单中添加标签 false 时,我的应用程序运行良好,但每当我让它为真时,我的应用程序行为模糊,我正在我的应用程序上创建一些位图。如果我anyDensity在清单中标记 false 有任何问题,那么许多设备将无法在 Playstore 上看到我的应用程序,我们将不胜感激。

<supports-screens
    android:anyDensity="false"
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true" />
4

2 回答 2

6

但是,您的原始帖子中没有太多信息。该文档指出:

指示应用程序是否包含可适应任何屏幕密度的资源。对于支持 Android 1.6(API 级别 4)及更高版本的应用程序,默认情况下这是“真”,除非您绝对确定应用程序必须运行,否则不应将其设置为“假”。唯一可能需要禁用此功能的情况是您的应用程序直接操作位图

所以我的第一个问题是您是否包含所有资源以适应任何屏幕密度(即 mdpi、hdpi、xhdpi、xxhdpi)?如果是,你应该没问题。在上面引用的最后几句话之后,我到达了这个链接

它说:

应用程序可以通过在清单中将 android:anyDensity 设置为“false”来禁用预缩放,或者通过将 inScaled 设置为“false”以编程方式为 Bitmap 禁用预缩放。

您是否尝试过以编程方式为您的位图执行此操作,而不是为整个应用程序全局禁用此标志?

最后是这一节。也许它会帮助您正确处理您的自定义位图?具体来说,这一段听起来像你的问题:

如果您的应用程序创建内存中的位图(Bitmap 对象),则系统默认该位图是为基线中等密度屏幕设计的,并在绘制时自动缩放位图。当位图具有未指定的密度属性时,系统将“自动缩放”应用于位图。如果您没有正确考虑当前设备的屏幕密度并指定位图的密度属性,则自动缩放可能会导致缩放伪影,就像您不提供替代资源时一样。

于 2013-08-19T11:14:55.913 回答
0

您可以使用 Android SDK 中包含的 aapt 工具来确定 Google Play 如何根据其声明的功能和权限来过滤您的应用程序。为此,请使用 dump badging 命令运行 aapt。它将解析您的应用程序清单并应用与 Google Play 相同的规则来确定您的应用程序所需的功能。有关使用此工具的详细信息,请访问 http://developer.android.com/guide/topics/manifest/uses-feature-element.html#testing

于 2013-03-25T07:44:23.940 回答