【问题标题】:Do I need 14 different layouts to support all Android devices?我需要 14 种不同的布局来支持所有 Android 设备吗?
【发布时间】:2011-07-30 08:02:11
【问题描述】:

我真的很困惑。从 developer.android.com 上的 docs 看来,为了让我的图像在所有当前的 Android 设备上正确缩放(纵横比也是),我需要下面的所有这些布局。这真的是每个人都在做的吗?我错过了什么,还是我应该以不同的方式解决这个问题?

Low density Small screens QVGA 240x320
------------------------------------------------
layout-small-ldpi
layout-small-land-ldpi

Low density Normal screens WVGA400 240x400 (x432)
------------------------------------------------
layout-ldpi
layout-land-ldpi

Medium density Normal screens HVGA 320x480
------------------------------------------------
layout-mdpi
layout-land-mdpi

Medium density Large screens HVGA 320x480
------------------------------------------------
layout-large-mdpi
layout-large-land-mdpi

High density Normal screens WVGA800 480x800 (x854)
------------------------------------------------
layout-hdpi
layout-land-hdpi

Xoom (medium density large but 1280x800 res)
------------------------------------------------
layout-xlarge
layout-xlarge-land

【问题讨论】:

  • 不,你不需要,我已经实现了我自己处理多个屏幕分辨率的方式,参考这个stackoverflow.com/a/16518557/1939564
  • 这当然是一种创新的方法!然而,多布局功能的部分原因是还使开发人员能够根据应用程序运行的设备或方向以不同的方式使用屏幕资源。我认为公平地指出 iOS 使用完全相同的方法。 iPad 和 iPhone 设备都有 Storyboard(布局)。如果您想要跨设备应用程序,则必须同时维护两者。 .
  • @wufoo 我真的很欣赏你的桌子。是否有可能获得新屏幕的数字(它们变得更大,如 xxlarge,..)?或者如果你能给我一个链接,我会很感激!

标签: android screen resolution android-screen-support


【解决方案1】:

您的应用将在 100% 具有经典布局的设备上运行。

您可以通过添加一些限定符来添加一些按钮或在横向模式下更改布局,但这取决于您!

例如,在 LDPI(小分辨率)设备上,您可能需要调整一些按钮或稍作更改以适应小屏幕。

您可能还想在横向模式下将一些按钮放在右侧,在纵向模式下放在布局底部!

您不必“必须”使用它们。

【讨论】:

  • 谢谢。但我遇到的具体问题是图像背景。我的公司希望在应用程序启动时设置一个启动画面,并且它确实会根据设备的方向进行奇怪的缩放。我通过制作两个闪屏图像来解决这个问题;一幅肖像,一幅风景,但现在的问题是,当我在 Xoom 上运行该应用程序时,闪屏全是模糊和锯齿状。如果我将 Xoom 分辨率的闪屏缩小到 QVGA 仿真器,文本将变得不可读。那么,我是为每台设备制作不同的 res 启动画面,还是在某个地方有一个快乐的媒介?
  • 您只需要在 xlarge 和/或 xlarge-land 中添加不同的图像/布局,然后 xoom(和其他 xlarge 屏幕设备)将使用它们,而所有其他设备将查看正常的。
  • 混合 ldpi 和小术语的含义会导致这种混淆。检查 developer.android.com/guide/practices/screens_support.html 部分下的使用配置限定符 small、normal、large、xlarge 应该用于提供不同的布局.. ldpi、mdpi , hdpi, xhdpi 应该用于提供不同的图像尺寸.. 只是我的意见...
  • 我有不同的布局,但仍然无法正常工作。 stackoverflow.com/questions/34378238/landscape-mode-for-app
【解决方案2】:

来自 Roman Nurik 的 Android Dev Protip 关于屏幕尺寸限定符:

如果您有针对平板电脑等大屏幕设备的自定义布局, 现在是停止使用 -large 或 -xlarge 资源限定符的时候了 并切换到使用 -swXXdp 或 -wXXdp 限定词。后者是 API 级别 13 中引入,现在基本上所有平板电脑都有 支持根据最新平台版本charts1。

意味着对于 -large 会产生任何影响的所有情况, -swXXdp 可用于提供更多粒度。

那么您应该使用哪个实际的 sw 或 w 限定词?这是一个快速 just-give-me-something 起点:

7" 平板电脑:使用 layout-sw600dp 代替 layout-large。

示例:Nexus 7 = 960×600 dp;两个维度中较小的一个是 600.

10" 平板电脑:使用 layout-sw720dp 代替 layout-xlarge。

示例:Nexus 10 = 1280×800 dp;两个维度中较小的一个是 800。有些 10 英寸的平板电脑有点窄,所以 720 是常用的切换点。

不仅如此(您真的想选择切换 积分基于您的内容的最低要求,而不是设备 形式因素),但这是另一天的#Protip(::cough:: +Nick 屠夫 ::cough::)。

【讨论】:

  • kindle HD 7 怎么样?它在 sw530dp 之下,并且三星 Tab 7 无法识别“sw”限定符,因为它有 2.3 并且在我的应用中最小 SDK 为 8。
  • @VishalKhakhkhar 我的头发几乎开始变白了!!阅读此解决方案:stackoverflow.com/questions/13156157/…
  • 是的,这是真的..这意味着它必须为旧三星 Tab 7 和 Kindle 7 和 Nexus 7 通用的 sw530 实现大,对吗?
  • 和关于 XLarge.. 使用 OS 3.0 的 Xoom 设备无法从 sw720 获取布局。所以也必须添加 Xlarge .. 还有其他解决方案吗?
  • 这似乎从 2.3.7 开始支持设备,它将需要使用更多的布局。哎呀!
【解决方案3】:

在布局中,如果您不使用 AbsoluteLayout,您的应用程序将被调整大小以适应屏幕。

但在某些情况下,例如,对于较小的屏幕,您需要声明一个包含较少组件的新布局。

图片:

你有一些选择。

简单地忽略一些分辨率,让设备为其选择最佳图像。 在 AndroidManifest 上声明你想要支持的尺寸。 或者只有一个,然后让调整大小搞定您的应用程序。

【讨论】:

【解决方案4】:

是的。您应该为不同的屏幕分辨率定义不同的布局。

当您应该使用平板电脑类型的应用程序时。那个时候你真的感觉到了。需要不同的布局。因为平板电脑总是有不同的尺寸。

还有一件事,当您在 android 上工作时,意味着您应该始终使用真实设备来体验您的应用程序。并且还可以使用不同大小的模拟器进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2016-11-06
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多