我在 480 x 850 像素的 3.6" 屏幕上测试我的应用程序。它工作正常,所有图像都显示出来。
我部署了它,并收到一位朋友的电子邮件,说大约 20% 的应用程序从底部被削减。她使用的是 3.7 英寸 320 x 480 像素的屏幕。
有解决办法吗?我认为Android会按比例拉伸一切。
我只在我的应用程序中使用 hdpi 文件夹。
您必须使用 mdpi、hdpi 和 ldpi 文件夹来保存图像。Android 应用程序将其自身作为分辨率,因此请使用其中三个,如果您想在所有设备上支持您的应用程序,您还应该使用 layout/large,layout/中,布局/xlarge,布局/小。
有关更多信息,请参阅此链接
为此,您还必须在清单文件中进行一些更改,例如
<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"]
android:normalScreens=["true" | "false"]
android:largeScreens=["true" | "false"]
android:xlargeScreens=["true" | "false"]
android:anyDensity=["true" | "false"]
android:requiresSmallestWidthDp="integer"
android:compatibleWidthLimitDp="integer"
android:largestWidthLimitDp="integer"/>
为此,请参阅此链接
Android 不会拉伸实际屏幕。它会在某些情况下拉伸图像,但这听起来不像是你的问题。
首先,我强烈建议您至少为 mdpi、hdpi 和 xhdpi 获取适当尺寸的图像。mdpi是用标准的72分辨率画出来的,然后比较hdpi是1.5X mdpi,xhdpi是2.0X mdpi。
其次,如果您正确地对屏幕组件进行编程,您将使用密度独立像素(dip 或 dp),并且文本的大小使用 sp。这意味着无论您使用什么尺寸的屏幕,都会显示相同的尺寸。所以没有发生缩放,而是 Android 保持相同的缩放(这非常好)。这意味着在某些屏幕上,您的应用程序将显示在整个屏幕上,而在其他较小屏幕的设备上,它只能显示您屏幕的一部分。这听起来像是正在发生的事情。您需要能够滚动内容,因此在您的主布局文件中,将子项作为 ScrollView。这是处理您的问题的正确方法。
编辑:您可以按照我看到的其他 2 张海报所说的方式来解决这个问题,就像说您支持任何密度以便屏幕缩放一样,但这不是正确的做事方式。你希望你的内容是可滚动的,以免你在小屏幕上看到非常小的不可读的文本,或者在大屏幕上看到巨大的笨拙文本。无论显示在什么设备上,您都希望您的内容在物理空间中的大小相同,这就是 Android 使用 dp 的原因。
Edit2:您可以设计屏幕,将屏幕的百分比分配给不同的组件。在 Android 中执行此操作的方式是使用 LinearLayout。线性布局具有权重总和属性。如果将权重总和设置为 100,则可以将孩子的权重设置为您希望它占据屏幕的百分比。因此,如果你想给底部视图 20% 的屏幕,在具有垂直方向的 LinearLayout 中,你可以将第一个视图的权重设置为 80(占据屏幕的 80%),底部设置为 20。有意义?
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true" />
将此添加到您的应用清单文件中。