【问题标题】:Do you HAVE TO write different layout for different devices?您是否必须为不同的设备编写不同的布局?
【发布时间】:2017-10-23 10:07:11
【问题描述】:

我只是想要一些经验丰富且受过教育的答案,一个快速的答案就足够了:

我想尽可能多地使用constraint layout 和百分比参数,以便我的应用程序可以完美无缝地调整到高于特定分辨率的所有屏幕分辨率,例如1080p...就像不同的网页浏览器屏幕。

所以我在这方面投入了大量时间,现在似乎我越是探索这个领域,我就越意识到我最初的目的可能存在根本性的缺陷——似乎更常见的做法是你必须首先DETECT 运行你的应用的设备的分辨率,然后相应地加载不同的布局。

但我不会放弃,你能帮我决定我应该走哪个方向吗?

【问题讨论】:

  • 这是不可能在摘要中回答的。这完全取决于您的 UI 设计。一般而言,我们可能尝试在似乎可行的情况下使用单一布局,然后在必要时为不同的屏幕尺寸提供 2 个以上版本的布局。跨度>
  • 不一定。但强烈建议这样做。

标签: android android-layout screen-resolution


【解决方案1】:

我从您的询问中了解到,开发“完美无缝地适应所有屏幕分辨率”的应用程序的最佳做法是什么。
我已经处理了几个为核心 android 公司工作的平台级问题/错误,报告的大多数问题应用程序都是由这些规范的错误使用引起的。
例如:
- 不提供为每个广义密度桶量身定制的位图资源

如果您可以花点时间了解一下基本知识,开发者链接可能会有用处:
developers_multiscreen

【讨论】:

    【解决方案2】:

    你必须为不同的设备编写不同的布局吗?

    没有。

    如果您想为不同的设备提供高度不同的布局。

    例如如果在平板电脑版本中您必须添加不会在手机版本中使用的视图,那么您可以:

    1) 处理它们的可见性并仅使用一种布局,但是...

    2) 如果这些视图太多,或者它们是需要大量 RAM 的特定视图(例如地图视图),您可以决定将布局拆分为两部分,以获得更好的手机性能。

    无论如何,在代码中,您必须以编程方式检查系统将要使用的布局,并且您必须非常准确以避免不一致,然后出现故障或崩溃。 因此,在大多数情况下,您可以决定为了稳定性而牺牲性能,并且很少使用不同的布局。

    【讨论】:

    • 嗨,谢谢您的回答,在相关说明中:如果我想“布局一次,到处运行”,relativeLayout 会比 ConstraintLayout 更好吗?
    • ConstraintLayout 有很多优点可能非常有用,但我个人发现了一种仅使用 LinearLayout、FrameLayout、Spaces 和自定义视图来制作所有内容的好方法(我更喜欢 XML 编写而不是图形布局)。因此,您几乎可以同时使用两者来实现所有目标,但 RelativeLayout 提供的选项较少
    【解决方案3】:

    您必须制作以下屏幕尺寸布局文件

    ldpi (low) ~120dpi
    mdpi (medium) ~160dpi
    hdpi (high) ~240dpi
    xhdpi (extra-high) ~320dpi
    xxhdpi (extra-extra-high) ~480dpi
    xxxhdpi (extra-extra-extra-high) ~640dpi
    

    您必须设置最小屏幕宽度的尺寸。

    参考:https://developer.android.com/guide/practices/screens_support.html

    【讨论】:

    • 谢谢你,我想我知道你的建议,我想我到处使用 PNG 来解决这个问题;)
    猜你喜欢
    • 2012-11-22
    • 1970-01-01
    • 2016-07-20
    • 2021-10-20
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多