Java 使用ConstraintsLayouts设计不同的屏幕尺寸

Java 使用ConstraintsLayouts设计不同的屏幕尺寸,java,android,ios,screen-size,android-constraintlayout,Java,Android,Ios,Screen Size,Android Constraintlayout,我已经开始深入研究今年IO上公布的约束布局。这看起来很有前途,使您的布局非常有效。我看过谷歌提供的代码实验室练习。但是,我有以下问题需要解决 如何使用ConstraintLayouts为不同的屏幕尺寸设计布局 目前,我为特定设备/屏幕组设计布局并设置视图的边距和填充等。将这些值保存在dimens.xml文件中。这是一种非常痛苦的布局设计方法。Android ConstraintsLayout在设计多个屏幕时是否也模仿了iOS的AutoConstraintsLayout 为不同的屏幕方向设计布局是

我已经开始深入研究今年IO上公布的约束布局。这看起来很有前途,使您的布局非常有效。我看过谷歌提供的代码实验室练习。但是,我有以下问题需要解决

  • 如何使用ConstraintLayouts为不同的屏幕尺寸设计布局
  • 目前,我为特定设备/屏幕组设计布局并设置视图的边距和填充等。将这些值保存在
    dimens.xml
    文件中。这是一种非常痛苦的布局设计方法。Android ConstraintsLayout在设计多个屏幕时是否也模仿了iOS的AutoConstraintsLayout

  • 为不同的屏幕方向设计布局是否仍然需要不同的Layout.xml文件,即:;layout_landscape.xml和layout_portraint.xml

  • 是的,ConstraintLayout的全部要点(对于这一点,自Android 1.0以来的任何Android布局)是能够处理不同的屏幕(尺寸、密度…)。您没有什么特别的事情要做(除了指定小部件之间的约束)

    如果你想设计不同的屏幕尺寸,可以考虑将边距作为“最小”间距;并在小部件之间创建约束,以便相对于其他小部件定位小部件

    你也有指导方针和偏差居中,这给了你很大的灵活性

    关于屏幕方向,这完全取决于您——如果您什么也不做,您定义的布局将应用于任一方向。因此,它将“起作用”。但通常,您希望在纵向和横向之间使用不同的UI。在这种情况下,您确实可以创建两个布局文件,通常的系统会为您选择正确的布局文件

    最后,通过在Android Studio中的弹出窗口中更改当前屏幕定义,您可以轻松测试正在处理的布局在不同屏幕/设备中的行为:

    也可以使用调整大小手柄查看任意屏幕尺寸的布局

    如何使用ConstraintLayouts为不同的应用程序设计布局 屏幕尺寸

    如果说不同的屏幕是指手机和平板电脑,那么你必须为它们创建不同的布局。一种方法是定义
    layout-sw360dp
    layout-sw600dp
    layout-sw720dp

    目前,我设计布局并设置视图的边距和填充 特定设备/屏幕组的etc。将这些值保存在 dimens.xml文件

    你可能想调查一下

    为不同的屏幕方向设计布局还需要吗 不同的Layout.xml文件i-e;layout_scape.xml和 layout_portraint.xml


    是的。

    这并没有真正回答我们应该在Android studio中通过跟踪和错误在每个设备上查找每个视图的维度,还是我们只需要定义XCode允许的约束条件?我不确定我是否遵循了您的要求--视图维度可能会改变(语言、主题..),但这就是为什么你会使用约束来相对其他视图定位视图,是的。@NicolasRoard所有设备的DP大小都不一样。i、 e.nexus S小于360 dp,而pixel XL大于500 dp。因此,使用约束布局如果您为nexus S安排边距和填充,使布局完全适合屏幕,那么同一布局将在像素XL下有额外的空间,反之亦然。因此,是的,要么我们必须创建value-sw360dp、value-sw400dp、value-sw450dp等等,并将dimens.xml以适当的缩放值放入每个中,要么我缺少一个明显的简单解决方案,这也是OP所要求的。@NicolasRoard有趣的是,我找到了克服我所面临问题的链和指南,至少在大多数情况下是这样的。