无法在android中禁用屏幕兼容模式

时间:2012-09-11 23:16:12

标签: android

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

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

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

我遇到的问题是在普通mdpi设备中看起来很好(90 dp),但它看起来更大,并且在大型mdpi设备中具有缩放瑕疵。

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

<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或更低,你可以指定支持屏幕,否则默认启用兼容模式。问题是我正在指定它但我仍然启用兼容模式。

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

由于

2 个答案:

答案 0 :(得分:1)

好的,我想在一整天的调试后发布答案。

对我来说,问题似乎是模拟器。启动ADV时,您需要计算实际屏幕设备大小并了解您的显示器dpi,以便在启动选项中进行设置。 一旦我这样做,我在布局中指定为“x dp”且在PNG中具有“x像素”的图像按钮在所有屏幕尺寸和密度上看起来都相同(in)。

如果你想摆脱由于android缩放造成的文物,你可以在ldpi,hdpi,xhdpi文件夹中提供你自己的图像,并且已经应用​​了相应的缩放。

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

要计算你的显示器dpi,我用Google搜索了我的电脑类型。对于mac book pro 15.4 in,它是128,对于苹果影院显示器27里面是109.希望这有帮助。

答案 1 :(得分:0)

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

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