3

我创建了 layout-sw600dp/layout.xml,它在设备 A 上看起来很棒。但是在设备 B 上,这个布局已经融化并且看起来很糟糕。我想知道我的布局在最坏的情况下看起来如何(正好是 600dp 宽度的屏幕)

我想创建具有该屏幕尺寸的模拟器,因此我将 100% 确定我的布局在 sw-600dp+ 手机上看起来不错。你知道它是什么尺寸吗?

另外,如果您能给我一个建议,如何在现代世界中支持多种屏幕尺寸,我将非常感激和高兴。

PS 我有 40 多个按钮的布局相当困难

4

1 回答 1

2

关于您将用于 sw-600dp+ 的模拟器类型的问题的简短回答:7" 平板电脑。您可以在此处找到更多信息。in是限定符。这意味着它仅用于设备600dp,通常是 7 英寸的平板电脑。swsw-600dpsmallest width

关于如何确保您的应用在“现代世界”中看起来不错的问题,较长的答案是:

与其试图弄清楚什么是“最坏的情况”,不如为Android 支持的每种不同的屏幕密度和设备类型设计布局:

  • 用于低密度 (ldpi) 屏幕 (~120dpi) 的 ldpi 资源。
  • 用于中等密度 (mdpi) 屏幕 (~160dpi) 的 mdpi 资源。(这是基线密度。)
  • hdpi 用于高密度 (hdpi) 屏幕 (~240dpi) 的资源。
  • 用于超高密度 (xhdpi) 屏幕 (~320dpi) 的 xhdpi 资源。
  • 用于超高密度 (xxhdpi) 屏幕 (~480dpi) 的 xxhdpi 资源。
  • 用于超超超高密度 (xxxhdpi) 用途 (~640dpi) 的 xxxhdpi 资源。

根据Android 文档

要为不同密度创建替代位图可绘制对象,您应该遵循六个主要密度之间的 3:4:6:8:12:16 缩放比例。例如,如果您有一个用于中等密度屏幕的 48x48 像素的可绘制位图,则所有不同的尺寸应该是:

36x36 (0.75x) 用于低密度 (ldpi) 48x48 (1.0x 基线) 用于中等密度 (mdpi) 72x72 (1.5x) 用于高密度 (hdpi) 96x96 (2.0x) 用于超高密度 (xhdpi) ) 144x144 (3.0x) for extra-extra-high-density (xxhdpi) 192x192 (4.0x) for extra-extra-extra-high-density (xxxhdpi) 然后,将生成的图像文件放在 res/ 下的相应子目录中系统将根据您的应用程序运行的设备的像素密度自动选择正确的一个:

res/drawable-xxxhdpi/awesome-image.png drawable-xxhdpi/awesome-image.png drawable-xhdpi/awesome-image.png drawable-hdpi/awesome-image.png drawable-mdpi/awesome-image.png

您将对布局做同样的事情,为每个不同的维度创建一个特定的布局(确保将布局放在正确的目录中:layout-xhdpi、layout-mdpi 等)。这样做将允许设备根据用户使用的设备选择正确的图像/布局。

如果您有 40 多个按钮布局,您将使用上述方法为每个布局创建按钮,然后为每个设备创建布局。这是一项乏味的工作,但它是在 Android 设备上进行布局的正确方法。

TLDR;阅读有关支持多种屏幕尺寸的 Android 文档

于 2020-11-23T15:05:27.790 回答