【问题标题】:Screen sizes and layouts屏幕尺寸和布局
【发布时间】:2011-03-15 11:13:44
【问题描述】:

我目前陷入理解文档可能存在的问题。

我一直在阅读有关 supporting multiple screens 的文档,但我遇到了一些问题,特别是 HTC DesireHTC Legend 之间的布局差异。

据我了解,通过查看开发者文档中的屏幕矩阵,Legend 是“普通”屏幕,而 Desire 是大屏幕。

添加布局目录 layout/、layout-small/ 和 layout-large 解决了我在小屏幕设备上遇到的问题。但是现在,当试图让应用在 Desire 和 Legend 中看起来都很好时,似乎它们都使用了正常的屏幕布局。

任何提示、解决方案或解释?

【问题讨论】:

    标签: android android-layout screen-resolution


    【解决方案1】:

    HTC Desire - 其屏幕为 480x800 WVGA800 - 被认为是普通的 screen-hdpi,而 HTC Legend - 其屏幕为 320 X 480 HVGA - 被认为是普通的 screen-mdpi(参见表 1 here) .因此两种设备都使用普通的屏幕布局和 mdpi 图形,但由于 Desire 有 hdpi 屏幕,Android 会放大图形(通常结果是它们看起来很模糊)。为了使布局在 Desire 上看起来不错,您应该提供 hdpi 图形并将它们放在名为 drawable-hdpi 的文件夹中。

    【讨论】:

    • 这解决了我的问题 - 为特定设备添加额外的可绘制对象使设计工作。
    【解决方案2】:

    在布局中,我使用布局权重来指定尺寸。这将在很大程度上帮助在各种屏幕设备上运行应用程序。

    在此处查看 layout_weights,
    http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

    【讨论】:

    • 我不确定这如何回答我的问题 - 我想知道为什么根据两个设备的文档和规范,它们使用相同的布局,尽管我指定了不同的布局。这必须有一个可以帮助解决问题的解释。
    【解决方案3】:

    尝试在您的正常布局中使用 wrap_content、fill_parent 或 dp 单位。 无论如何,像你一样创建多个布局是一个乏味但也许更好的选择。 在你的清单中设置它

      <supports-screens 
        android:largeScreens="true" 
        android:smallScreens="true" 
        android:normalScreens="true" 
     />
    

    并使用

    获取正在使用的屏幕大小
    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    height = displaymetrics.heightPixels;
    width = displaymetrics.widthPixels;
    Log.e("FirstImage", "Width = "+width+"Height = "+height);
    

    一旦你有了屏幕的大小,我想你就知道如何为它分配一个特定的(由你自己)预定义的布局。

    希望对您有所帮助,如果您仍有任何问题,请在下方评论,我们将看看如何解决!

    【讨论】:

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