我正在为新应用程序创建布局,我很想知道您通常如何处理这个过程。
显然这是一个非常普遍的问题,但我认为我们可以从不同开发人员的角度获得很多想法。在我看来,在Android中创建完美的布局是应用程序开发过程中最困难的任务之一,我认为答案是有价值的。
我们的假设是,我们希望使用最少数量的XML文件支持所有设备大小,而不会影响应用程序设计质量。
在我的情况下,该应用程序的设计者设计了Galaxy S3尺寸(720 x 1280像素)。
考虑3:4:6:8的比例 -
您将进行设计的基本设备是什么,因此一个布局文件在所有正常尺寸的设备上看起来都不错?
您如何处理设备尺寸的差异,请参阅dp -
例如
480 X 800 hdpi = 320 X 533dp
320 X 480 mdpi = 320 X 480dp
720 x 1280 xhdpi = 360 X 640dp
你如何仍然使用额外的dp,所以不会有很多空格,不会使布局不适合320 X 480设备?
答案 0 :(得分:1)
从一些屏幕尺寸开始作为您的基本目标设备,例如4.7英寸(hdpi)并为布局文件夹中的默认屏幕创建单一布局,并在值文件夹中的dimens.xml
中声明维度。
接下来,假设您需要7英寸设备的布局,纵向创建值为7的values-sw320dp文件夹,并在此文件夹的dimens.xml
中声明单独的尺寸。
接下来,假设您需要10英寸设备的布局,纵向创建值为10英寸的值-sw720dp文件夹,并在此文件夹中的dimens.xml
中声明单独的尺寸。
PS:对于横向广告,请在文件夹名称的末尾添加-land
。
接下来,假设您有xhdpi
和xxhdpi
设备等新设备,您可以创建values-xhdpi和values-xxhdpi文件夹。
由于您已在values
文件夹中定义了维度,因此在运行App时,大多数维度将仅在此处使用。您可以添加/更新相应文件夹中的尺寸,以获取有任何不匹配的屏幕尺寸和分辨率。
此外,如果你有各种尺寸的单独的drawable,如mdpi
,hdpi
等,你可以将它们放在drawable-mdpi
,drawable-hdpi
等
Android系统将在运行时负责加载正确的资源。
注意:在Android版本< 3.2 ,文件夹命名略有不同,您可以参考here。
希望这有帮助。
答案 1 :(得分:0)
Android会自动缩放布局以适合当前设备。使解决方案更优雅的一种方法是创建单独的文件夹drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi和drawable-xxhdpi来保存可绘制资源 - 这是为了确保相同的资源无法获得用于所有不同的决议,可能不太清楚。 不要在布局文件中使用px(像素)进行测量 - 使用dip(或与密度无关的像素),允许根据设备像素密度进行缩放。 另一个极端是为不同的分辨率设置不同的布局,但这是不可取的。