首页 > 解决方案 > 是否有必要为应用程序创建不同的屏幕尺寸和密度 xml?最好的方法

问题描述

只是一个直截了当的问题。我试图在这里做出最好的选择,对于像我这样的“半初学者”来说,信息太多了。

好吧,在这一点上,我正在尝试为我的布局使用屏幕尺寸值(activity_main.xml (normal, large, small))和不同的密度(xhdpi, xxhdpi, mhdpi),如果我自己可以这么说,那就是一团糟。我是否必须创建所有可能的选项来支持所有屏幕尺寸和密度?还是我在这里做错了什么?最好的方法是什么?我的布局现在是activity_main(normal_land_xxhdpi),我对此表示严重怀疑。

当然,我正在使用最新版本的 android studio。我的应用程序是一个带有按钮、文本视图和其他的单一活动。没有任何碎片或意图,因此我认为这必须是一件容易的事,但对我来说不是。

希望大家能帮忙。我认为我不需要在此处放置任何代码,但如果需要,我可以添加它。

标签: user-interfacelayout

解决方案


如果您想为每台设备制作响应式 UI,您需要先了解一些内容:

-PX、DP的区别:

https://developer.android.com/training/multiscreen/screendensities

在这里你可以理解dp是android用来计算多少像素的标准度量,比如说一条线,应该保持不同屏幕尺寸和不同密度之间的比例。

-分辨率、密度和比率:

分辨率是屏幕有多少像素超过高度和宽度。此像素可以更小或更大,例如,如果您有一个 10x10 像素的屏幕 A,其像素也比其他 10 x 10 像素的屏幕 B 小两倍,即使两者都有 10,A 也比 B 小两倍x 10 像素。

因此,存在含义Density,即您的屏幕每英寸有多少像素,因此您可以测量屏幕的质量,其中大多数每英寸像素 (ppi) 更好。

比例告诉你有多少像素是高度和宽度,例如 1000 x 2000 像素的屏幕比例是 1:2,1920 x 1080 的全高清屏幕是 16:9(每 9 个像素高度为 16 个像素像素宽度)。1:1 的比例是方形屏幕。

-标准设备的分辨率

您可以在...上找到最常见的测量值

https://material.io/resources/devices/

制作 UI 时,您使用 DP 测量值。您会意识到,即使屏幕之间的分辨率不同,DP 也是相同的,因为它们具有不同的密度。

现在,正确的方法是使用约束布局,使用 dp 措施将您的视图放在屏幕上,使用正确的约束,内容将适应其他屏幕尺寸

无论如何,在某些情况下,您需要制作额外的 XML:

-不同的方向 -不同的比例 -不同的 DP 分辨率(不是 px)

对于每项活动,您都需要提供纵向和横向设计。如果其他设备的比例不同,可能由于屏幕比例不一样,您需要调整高度或宽度。最后,即使比例相同,DP 分辨率也可能不同,也许你设计了一个 640x360dp 的活动,而其他设备有 853x480dp,这意味着你会有更多的垂直空间。

你可以在这里阅读更多:

https://developer.android.com/training/multiscreen/screensizes

并学习如何正确使用 constraintLayout:

https://developer.android.com/training/constraint-layout?hl=es-419

注意:也许对于每个活动来说似乎都需要做很多工作,但是您制作了第一个设计,然后您只需将设计复制到带有一些限定符的其他 xml 并更改 dp 值以根据需要调整视图(无需制作从头开始),这真的更快。


推荐阅读