支持多种决议的问题

时间:2015-07-01 17:15:15

标签: android android-layout screen-resolution

我无法以三种不同的分辨率管理我的应用程序布局; 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-sw360dplayout-sw480dp的情况下,我在'dp'中使用带有值的边距,而模拟器的值更高(layout-sw480dp)正在使用正在使用drop和layout-sw360dp

的值

如何正确管理三种屏幕尺寸?

1 个答案:

答案 0 :(得分:2)

精心设计的Android应用程序可满足不同的屏幕尺寸,屏幕尺寸是分辨率和密度的函数。使用几个layout-sw ### dp文件夹,您可以根据显示器的宽度改变布局,例如在小屏幕上显示较少的元素和控件,或者在较大的屏幕上显示更多细节。

' sw'在布局文件夹名称中是“最短宽度”'显示器必须具有与设备无关的像素(dip)。 160密度屏幕上的一个dip = 1个真实像素。因此,在320密度屏幕上,2个真实像素构成了一次下降。

你的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元素的大小和布局,UI在两个设备上应该看起来相同。

作为另一个例子,我有一个旧平板电脑(10英寸屏幕),分辨率为800x1280,低密度为149,因此宽度为859dip。您可以在尺寸大于Nexus 4/5的屏幕上轻松显示更多信息,因此您可以考虑为此创建布局-sw720dp。

因此,通过为不同的屏幕尺寸设计不同的布局,您似乎已经做了正确的事情。请记住,分辨率与屏幕尺寸不同。屏幕尺寸是分辨率和密度的组合。

至于你的drawables,你也已经做了正确的事情,使用drawable-xhdpi,drawable-xxhdpi等,每个都有适当的分辨率图像。例如,具有极高密度的小型设备可能会使用1440x2560图像和sw360dp布局。我的低分辨率平板电脑将使用720x1280图像,除非你在drawable-mdpi中放置一些东西,它首先看起来。

首先,您要在可绘制文件夹中创建适当的分辨率图像,以便它们在不同的分辨率屏幕上看起来尽可能好。然后为您的布局创建适当的swxxxdp,以便根据物理屏幕大小占用适当的空间,即在大型设备上充分利用可用的屏幕空间,而不要弄乱小型设备。您可能希望进一步创建每个版本的-land和-port版本。

值得注意的是,即使您只有一个布局文件夹和一个可绘制文件夹,您的应用程序仍可在所有设备上运行。 Android只是寻找最佳选择,如果只有一个,它会使用它。添加各种文件夹只会让您的应用在各种设备上看起来尽可能好。

我在此处讨论的所有内容都在http://developer.android.com/guide/practices/screens_support.html详细解释。