如何设置Galaxy Nexus的布局

时间:2012-08-02 13:58:36

标签: android android-layout

我正在开发Android 2.2应用程序。

使用eclipse图形布局测试我的布局我遇到了一个问题:它在Galaxy Nexus上看起来不太好。

我有四种图像类型:ldpi,mdpi,hdpi和xhdpi。布局和四个dimens.xml文件(ldpi,mdpi,hdpi和xhdpi)。

如果我修改dimens.xml以使其与Galaxy Nexus一起使用,但在其他设备上看起来不太好,例如Nexus One(在eclipse图形布局中)。所以,我想我还需要别的东西。

阅读Supporting Multiple Screens我看到还有另一种方法:我可以使用sw<N>dp而不是使用普通,大型等布局。但这是从Android 3.2开始的,我需要支持Android 2.2。

我需要添加什么才能让它在Galaxy Nexus上看起来很好?

Nexus One
enter image description here

Galaxy nexus

enter image description here

3 个答案:

答案 0 :(得分:2)

我经常碰巧使用它来像Web开发人员一样思考。尝试使布局看起来很好,布局在任何方向拉伸。将重要部分居中,确保后面的图像可以向两个方向拉伸。然后使用imageview作为背景并将其设置为match_parent,将scaletype设置为centerCrop。它不适用于所有东西,但我很确定它适用于您的样品。

在您的情况下,您可以将您现在拥有的所有内容放在另一个容器中(例如RelativeLayout),然后将其居中并设置尺寸或使其成为wrap_content。然后,新的顶部容器应该是match_parent并且具有我作为孩子时谈到的imageview。

答案 1 :(得分:1)

对于要使用屏幕尺寸的布局,您应该保持图像的不同密度,例如

layout-large而不是layout-hdpi

修改

您希望拥有如下文件夹布局:

  • res / drawable-ldpi / [您的图片资源]
  • res / drawable-mdpi / [您的图片资源]
  • res / drawable-hdpi / [您的图片资源]
  • res / drawable-xhdpi / [您的图片资源]
  • res / layout / [您的布局xml文件]
  • res / layout-large / [为大屏幕修改的布局xml文件]
  • res / layout-small /]为小屏幕修改的布局xml文件]

有关详细信息,请参阅此链接: http://developer.android.com/training/basics/supporting-devices/screens.html

<强> EDIT2

如果你必须坚持一个布局,那么你需要编辑res / values-large / dimes.xml中的值来影响大屏幕设备。

如果您有超大型设备屏幕,那么您需要为每种屏幕尺寸编辑res / values-xlarge / dimens.xml等。

答案 2 :(得分:0)

one of my first questions与此非常相似。

您的问题很简单,您需要根据您在背景上显示的图像放置视图并调整其大小。遗憾的是,如果没有一些解决方法,android就不支持它。

在silverlight&amp; WPF上有一个自动执行的viewBox。 flash有它,因为它是基于矢量的。 iPhone有它,因为它的所有屏幕具有相同的宽高比。但是android还没有它的解决方案。

我甚至在谷歌开发者日里问了同样的问题,讲师告诉我的是我应该使用openGL,即使我的应用程序非常简单。

目前,您可以做的是:

  1. 简单方法:使用多个LinearLayout和权重。也可以使用权重内部的视图来制定有关位置和大小的规则。 Lint会告诉你这对性能有害,但是如果你的观点根本没有移动/调整大小,那应该没问题。

  2. 高级方法:创建自己的布局,它将准确地知道放置视图的位置(以及大小)与您提供的内容相关的位置。我过去做过,但我用的是imageViews而不是按钮(因为我不得不这样做)。

  3. 此方法也存在一个错误(也可在解决方案#1中找到):在某些屏幕上,它们的图像与背景图像不匹配。如果那不是你的情况,你也可以这样做。

    1. 硬核方式:使用openGl。使用像andEngine或LibGdx这样的第三方库会更容易。

    2. 网络开发者的方式:把它全部放在网站上,展示它,使用android界面处理触摸。

    3. 无按钮方式:如果您不想使用这些按钮,您可以使用简单的数学运算来了解用户按下的位置,而不是使用上述任何解决方案。

    4. 不过,如果像我看到的那样拉伸图像,它将不会保持其纵横比。你也需要处理它。使用openGl可以帮助你。