【问题标题】:Can't disable screen compatibility mode in android无法在android中禁用屏幕兼容模式
【发布时间】:2012-09-13 09:38:53
【问题描述】:

我正在开发适用于所有屏幕尺寸和 dpi 的应用程序。

问题是对于比正常大/小的屏幕,UI 正在缩放,这意味着我认为屏幕兼容模式已启用。

这是我的目标:我有一个高度为 90 像素的图像按钮,所以我认为它在 normal-mdpi 设备中是 90 dp,我希望它在越来越小的屏幕尺寸中保持 90 dp。所以对眼睛来说,大小保持不变。

我遇到的问题是它在普通 mdpi 设备中看起来不错 (90 dp),但在大型 mdpi 设备中它看起来更大并且带有缩放伪影。

我的目标是 2.3.3 的最低安卓操作系统,因此我有以下清单:

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="16" />

<!--
    If not set explictly, screen compatibility mode would be enabled for
    large screen, which is scaling of normal
-->
<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:xlargeScreens="true" />

根据 android 文档,如果目标是 10 或以下,则必须指定 support-screens,否则默认启用兼容模式。问题是我指定了它,但我仍然启用了兼容模式。

有什么想法吗?如果我的理解有误,请告诉我。

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    好的,经过一整天的调试,我想我会发布一个答案。

    对我来说,问题似乎出在模拟器上。当您启动 ADV 时,您需要计算实际屏幕设备大小并知道您的显示器 dpi,以便您可以在启动选项中进行设置。 完成此操作后,我在布局中指定为“x dp”并在 PNG 中具有“x 像素”的图像按钮在所有屏幕尺寸和密度下看起来都相同。

    如果您想消除由于 android 缩放而导致的伪影,您可以在 ldpi、hdpi、xhdpi 文件夹中提供您自己的图像,并应用相应的缩放。

    要计算设备屏幕尺寸,请使用启动选项对话框中提供的分辨率和密度,然后使用以下公式进行计算:(看起来很痛苦,但它有效,您可以在计算机显示器和设备中使用尺子进行测量,如果 x in,在你的标尺中将是 x in) 屏幕尺寸 = sqrt ( (w 像素/dpi)^2 + (h 像素/dpi)^2) 其中 w,h 是以像素为单位的分辨率

    为了计算您的显示器 dpi,我搜索了我的计算机类型。对于 15.4 英寸的 mac book pro,它是 128,对于 27 英寸的苹果影院显示器,它是 109。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我用来保持所有图像大小相同的方法是使用常规显示 getWidth 和 getHeight 方法来设置变量。然后我使用 Bitmap.createScaledBitmap 将我的图像设置为屏幕大小的 %。无论dpi如何,它看起来都一样。在 16:9 的 240 dpi 屏幕上,在 480 dpi 16:9 屏幕上获得相同的图像将是 dpi 的两倍。

      我在画布上使用这些图像,但我猜它们会相似。在做动画等时,不在 GL 中也很重要。我不得不重做我当前的游戏,因为当我以较小的 dpi 玩它时,它移动得如此之快,就像闪电一样!在 180 和 240 上移动 10 个像素令人大开眼界。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多