【问题标题】:Layout for unusual screens异常屏幕的布局
【发布时间】:2011-12-07 18:21:43
【问题描述】:

一些下载我的应用程序的用户抱怨他们无法安装应用程序,因为它退出时找不到 MainActivity.class 布局。经过调查,我意识到那些手机的屏幕异常。

例如,其中一款手机是 HTC ChaCha,其屏幕为 480 x 320 像素,2.6 英寸(约 222 ppi 像素密度)。根据这些规格,它是普通屏幕,MDPI。

但是,由于其屏幕设置为横向模式(宽移动屏幕),Android 不会将其识别为普通 MDPI,而是将其识别为其他内容,然后它会尝试从 /layout 目录中提取 XML 布局。此目录中的 Main.xml 布局没有设想如此不寻常的屏幕,并且布局被破坏(布局图标太大,可能从 HDPI 可绘制目录中提取)。

如何为这种不寻常的手机制作 XML 布局?

PS。还有一个问题。当我通过Android SDK Manager为这款手机创建模拟器时,我应该将“Abstracted LCD density”设置为222还是保持为160???

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    HTC 恰恰的问题其实是屏幕方面的问题。 这是一个“不长”的屏幕(如果我没记错的话,就像 HTC Wildfire)。

    要为这款手机(以及所有 4/3 比例的屏幕)制作特定布局,只需在 layout-notlong 目录中制作布局即可。

    res
    |---layout-notlong
        |----mylayout.xml
    

    【讨论】:

    • 有趣的事情,但我从来没有遇到过这个属性。我认为它可能真的有效。
    【解决方案2】:

    你确定错误是找不到activity的类吗?

    一些设备供应商会错误地描述其屏幕的密度。密度不是从物理尺寸和像素数得出的。有些人出于兼容性原因这样做了;例如,最初的三星 Galaxy Tab(在 Honeycomb 之前发布,因此从技术上讲不适合“平板电脑”)将自己报告为 HDPI,以便选择图形和布局以使其使用屏幕更像是一部手机。

    关于你的布局,如果你有一个不错的默认值(res/layout/),如果没有更多特定的布局可用(例如res/layout-land/res/layout-large/),就会选择这个。请记住,您在代码中引用的每个视图 ids 必须在所有布局中都可用。让它们彼此保持最新,否则您最终会出现不一致的行为。

    如果您努力为至少三种主要密度(ldpi、mdpi 和 hdpi)制作图形,那么您不应该看到过大的图标,除非屏幕的物理尺寸比您的布局预期的要小。另外,在你的布局中使用dp 而不是px

    【讨论】:

    • 所有这一切都已经完成:)。我确实有额外的布局文件夹,如 layout-normal-mdpi、layout-normal-hdpi 等。但我也有 /layout 目录中的所有布局,以防某些不可预测的屏幕尝试启动应用程序。这就是为什么我不明白为什么有些用户无法启动该应用程序。
    • 您有理由在布局中使用“mdpi”和“hdpi”吗?这意味着您需要两个物理尺寸相同但按钮不同的屏幕以显示不同物理尺寸的按钮。
    • 当然我有:)。将元素放置在特定位置的布局有点复杂。所以drawable-ldpi必须和drawable-mdpi等在同一个XY位置。
    【解决方案3】:

    也许找出问题的良好开端是检查应用程序错误报告

    在你的android market publisher account

    点击应用列表中您的应用旁边的Erros(2)

    【讨论】:

      猜你喜欢
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多