支持多种分辨率的问题
Problems in supporting multiple resolutions
我在管理三种不同分辨率的应用程序布局时遇到问题; 720x1280、1080x1920 和 1440x2560。
在drawable-xhdpi
文件夹中是对应720x1280分辨率的图片。
文件夹drawable-xxhdpi
对应1080x1920分辨率的图片,drawable-xxxhdpi
对应1440x2560的图片。
我开始调整布局文件夹中的屏幕。 layout-sw360dp
将屏幕设置为 720x1280,layout-sw480dp
设置为 1080x1920。
在模拟器 720x1280 中进行测试时,所有设置都运行良好。
但是要测试 1080x1920 模拟器,奇怪的是将此信息放在 layout-sw360dp
文件夹中而不是 layout-sw480dp
.
在调整每个文件夹 layout-sw360dp
和 layout-sw480dp
的情况下,我使用的边距值在 'dp' 和模拟器更高的值(layout-sw480dp
) 正在被丢弃正在被使用并且layout-sw360dp
.
的值
如何正确管理三种屏幕尺寸?
精心设计的 Android 应用程序适合不同的屏幕尺寸,屏幕尺寸是分辨率和密度的函数。使用多个 layout-sw###dp 文件夹可以让您根据显示器的宽度改变布局,例如在小屏幕上显示较少的元素和控件,在大屏幕上可能显示更多细节。
布局文件夹名称中的 'sw' 是 'shortest width' 显示器必须具有设备独立像素(倾角)。 1 dip = 160 密度屏幕上的 1 个真实像素。所以在320密度的屏幕上,2个真实像素组成一个dip。
您的 nexus 5 每次倾斜有 480/160 = 3 个真实像素。因此,宽度分辨率为 1080,即 360dip 宽。
您的 nexus 4 每次倾斜有 320/160 = 2 个真实像素。因此,宽度分辨率为 768,即 384dip 宽。
两个设备的宽度都不超过 480,因此都使用 sw360dp 文件夹。
这两种设备在物理尺寸上非常相似。 Nexus 5(5.4 英寸屏幕)的像素比 Nexus 4(4.7 英寸屏幕)多,但像素实际上更小。因此,两者使用相同的布局是正确的。 UI 在两个设备上看起来应该是一样的,假设你在 dip 中正确指定了各种 UI 元素的大小和布局。
再举一个例子,我有一台旧平板电脑(10 英寸屏幕),分辨率为 800x1280,低密度为 149,因此宽度为 859dip。与 Nexus 4/5 相比,您可以在这种尺寸的屏幕上轻松显示更多信息,因此您可以考虑为此创建一个 layout-sw720dp。
因此,您通过为不同的屏幕尺寸设计不同的布局,似乎已经在做正确的事情。请记住,分辨率与屏幕尺寸不同。屏幕尺寸是分辨率和密度的组合。
至于您的可绘制对象,您也已经通过使用 drawable-xhdpi、drawable-xxhdpi 等在每一个中使用适当分辨率的图像来做正确的事情。因此,例如具有极高密度的小型设备可能会使用 1440x2560 图像和 sw360dp 布局。我的低分辨率平板电脑会使用 720x1280 图像,除非你将某些东西放在 drawable-mdpi 中,这是它首先会看到的地方。
因此,首先您要在可绘制文件夹中创建适当分辨率的图像,以便它们在不同分辨率的屏幕上看起来尽可能好。然后为您的布局创建适当的 swxxxdp,以便它们根据物理屏幕尺寸占用适当的 space,即在大型设备上充分利用可用屏幕 space,不要弄乱小设备。您可能还想更进一步,为每个版本创建 -land 和 -port 版本。
值得注意的是,即使您只有一个布局文件夹和一个可绘制文件夹,您的应用程序仍然可以在所有设备上运行。 Android 只是寻找最佳选择,如果只有一个,它就会使用那个。添加各种文件夹只是让您的应用程序在各种设备上看起来尽可能好。
我在这里讨论的所有内容以及更多内容都在 http://developer.android.com/guide/practices/screens_support.html 中进行了详细解释。
我在管理三种不同分辨率的应用程序布局时遇到问题; 720x1280、1080x1920 和 1440x2560。
在drawable-xhdpi
文件夹中是对应720x1280分辨率的图片。
文件夹drawable-xxhdpi
对应1080x1920分辨率的图片,drawable-xxxhdpi
对应1440x2560的图片。
我开始调整布局文件夹中的屏幕。 layout-sw360dp
将屏幕设置为 720x1280,layout-sw480dp
设置为 1080x1920。
在模拟器 720x1280 中进行测试时,所有设置都运行良好。
但是要测试 1080x1920 模拟器,奇怪的是将此信息放在 layout-sw360dp
文件夹中而不是 layout-sw480dp
.
在调整每个文件夹 layout-sw360dp
和 layout-sw480dp
的情况下,我使用的边距值在 'dp' 和模拟器更高的值(layout-sw480dp
) 正在被丢弃正在被使用并且layout-sw360dp
.
如何正确管理三种屏幕尺寸?
精心设计的 Android 应用程序适合不同的屏幕尺寸,屏幕尺寸是分辨率和密度的函数。使用多个 layout-sw###dp 文件夹可以让您根据显示器的宽度改变布局,例如在小屏幕上显示较少的元素和控件,在大屏幕上可能显示更多细节。
布局文件夹名称中的 'sw' 是 'shortest width' 显示器必须具有设备独立像素(倾角)。 1 dip = 160 密度屏幕上的 1 个真实像素。所以在320密度的屏幕上,2个真实像素组成一个dip。
您的 nexus 5 每次倾斜有 480/160 = 3 个真实像素。因此,宽度分辨率为 1080,即 360dip 宽。 您的 nexus 4 每次倾斜有 320/160 = 2 个真实像素。因此,宽度分辨率为 768,即 384dip 宽。 两个设备的宽度都不超过 480,因此都使用 sw360dp 文件夹。
这两种设备在物理尺寸上非常相似。 Nexus 5(5.4 英寸屏幕)的像素比 Nexus 4(4.7 英寸屏幕)多,但像素实际上更小。因此,两者使用相同的布局是正确的。 UI 在两个设备上看起来应该是一样的,假设你在 dip 中正确指定了各种 UI 元素的大小和布局。
再举一个例子,我有一台旧平板电脑(10 英寸屏幕),分辨率为 800x1280,低密度为 149,因此宽度为 859dip。与 Nexus 4/5 相比,您可以在这种尺寸的屏幕上轻松显示更多信息,因此您可以考虑为此创建一个 layout-sw720dp。
因此,您通过为不同的屏幕尺寸设计不同的布局,似乎已经在做正确的事情。请记住,分辨率与屏幕尺寸不同。屏幕尺寸是分辨率和密度的组合。
至于您的可绘制对象,您也已经通过使用 drawable-xhdpi、drawable-xxhdpi 等在每一个中使用适当分辨率的图像来做正确的事情。因此,例如具有极高密度的小型设备可能会使用 1440x2560 图像和 sw360dp 布局。我的低分辨率平板电脑会使用 720x1280 图像,除非你将某些东西放在 drawable-mdpi 中,这是它首先会看到的地方。
因此,首先您要在可绘制文件夹中创建适当分辨率的图像,以便它们在不同分辨率的屏幕上看起来尽可能好。然后为您的布局创建适当的 swxxxdp,以便它们根据物理屏幕尺寸占用适当的 space,即在大型设备上充分利用可用屏幕 space,不要弄乱小设备。您可能还想更进一步,为每个版本创建 -land 和 -port 版本。
值得注意的是,即使您只有一个布局文件夹和一个可绘制文件夹,您的应用程序仍然可以在所有设备上运行。 Android 只是寻找最佳选择,如果只有一个,它就会使用那个。添加各种文件夹只是让您的应用程序在各种设备上看起来尽可能好。
我在这里讨论的所有内容以及更多内容都在 http://developer.android.com/guide/practices/screens_support.html 中进行了详细解释。