【问题标题】:Android sizing on different phones不同手机上的 Android 尺寸
【发布时间】:2013-07-25 17:54:57
【问题描述】:

我在 480 x 850 像素的 3.6 英寸屏幕上测试我的应用程序。它运行良好,所有图像都显示出来了。

我部署了它,并收到一位朋友的电子邮件,说大约 20% 的应用程序从底部被削减。她使用的是 3.7" 屏幕,320 x 480 像素。

有解决办法吗?我认为 Android 可以按比例扩展所有内容。

我只在我的应用程序中使用 hdpi 文件夹。

【问题讨论】:

  • 如果您使用单个 Layout 和单个 Drawable 文件夹,请在布局中使用滚动视图
  • 这是一个奇怪的解决方法。我希望用户在某个时间看到屏幕上的所有内容。
  • 这不是一个奇怪的解决方法。这才是正确的做法。否则,您应该以一种可以缩放到单屏视图的方式编写您的应用程序。您可以使用 LinearLayout 和 Weights 根据屏幕的百分比在屏幕上布局。显然,如果是这样的话,你的最外层布局应该设置为 match_parent 的 layout_width 和 layout_height。然后一切都会在没有滚动的情况下得到照顾。但同样,滚动是应用程序的构建方式。

标签: android size screen


【解决方案1】:

您必须使用 mdpi、hdpi 和 ldpi 文件夹来存储图像。Android 应用程序将其作为其分辨率,因此请使用其中三个,如果您想在所有设备上支持您的应用程序,那么您还应该使用 layout/large ,layout/medium,layout/xlarge,layout/small.

更多信息请参考this链接

为此,您还必须在清单文件中进行一些更改 例如

 <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"/>

请参考this链接

【讨论】:

    【解决方案2】:
    <supports-screens android:smallScreens="true" 
              android:normalScreens="true" 
              android:largeScreens="true"
              android:xlargeScreens="true"
              android:anyDensity="true" />
    

    将此添加到您的应用清单文件中。

    【讨论】:

      【解决方案3】:

      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。有意义?

      【讨论】:

      • 我到处都在使用 sp、dip 和 dp。这是一个问答游戏,定时的,所以我更喜欢用户不必滚动
      • @Alexey 啊,你正在制作游戏。那是一个完全不同的故事。我强烈建议您看一下我向有类似问题的人回答的另一个问题。我会推荐同样的建议。 stackoverflow.com/questions/17936574/… ,但是在您的情况下,由于您的游戏文本如此繁重,因此可能不是最好的。我将编辑我的答案,为您提供另一条路线。
      猜你喜欢
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 2010-12-19
      • 2020-05-16
      • 1970-01-01
      相关资源
      最近更新 更多