在每个屏幕上使设计始终看起来相同的正确方法是什么?

时间:2018-01-03 13:22:19

标签: android android-layout

我正在开发自己的应用程序半专业已经有一段时间了,但这总是我从来没有真正知道正确答案的地方:

众所周知,不同的手机有不同的屏幕。几乎所有Android手机的比例都是16比9。 (除了精彩的s8 ......)。

现在我常常遇到有关设计的问题,但我找到了一种方法,使设计在每个16:9甚至21.5:9的屏幕上看起来都是100%相同。

我基本上做的是在xxxhdpi画布上的photoshop中进行设计:

2560 x 1440,密度为577。

我渲染我的按钮并使用批处理转换器将每个按钮(可绘制)转换为5种不同的尺寸:

xxxhdpi = 100 % ( the size of the original )
xxhdpi = 75 %
xhdpi = 50 %
hdpi = 37.5 %
mdpi = 25 %.

然后我在我的android项目中放了5个不同的文件夹,命名为:

"drawable-xxxhdpi"
"drawable-xxhdpi"
"drawable-xhdpi"
"drawable-hdpi"
"drawable-mdpi"

我将drawables插入正确的文件夹并开始设计。

我尝试始终使用linearlayout,然后使用android:layout_weights来确定屏幕上的位置。

权重的工作方式与百分比一样,所以说我在我的根布局中设置了两个线性布局,两者都正好重50。它们恰好填满了每台设备的一半屏幕。

只要您可以使用线性布局,这对所有设备都非常有效。

如果我需要使用framelayout,那么我会进入我的类的代码并初始化每个不能有权重的元素。特别是当它归结为填充:

我为问题提出了一个新的linearlayout.layoutparams for the witdh和height go“resources.dimensions.displaymetrics.height / width像素,并用硬编码的数字划分。

由于显示指标与实际手机相对应,因此即使使用了帧布局,分割也将以百分比结束。边距或填充也是如此。

结果完美无瑕。无论使用什么手机,当它的比例为16:9时,设计总是看起来一样。即使在Scrollviews,Relative-Layouts等也是如此。

对于具有不同宽高比的手机,我通过除以hightpixels / widthpixels来设置比率,这样设计在这些屏幕上也能正常工作。

结果在很多工作中结束,但完美的设计。 我拒绝在我的轴上使用“dpi”,因为它们可以正常工作但在每部手机上看起来都不一样。

现在 - 问题:

设计应用程序的完美方式是什么,只有最少量但是专业的结果?

你们怎么做才能把它搞定?我希望有一些有意义的投入和交流!谢谢:))

1 个答案:

答案 0 :(得分:1)

您有两种选择。

  1. 使用google提供的不同屏幕尺寸手机的不同布局。

  2. 您可以使用DisplayMetrics计算视图项的宽度和高度。但是你必须在运行时这样做。

  3. 或者您可以同时使用两者以获得最佳效果。