我正在开发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 :
Galaxy nexus :
答案 0 :(得分:2)
我经常碰巧使用它来像Web开发人员一样思考。尝试使布局看起来很好,布局在任何方向拉伸。将重要部分居中,确保后面的图像可以向两个方向拉伸。然后使用imageview作为背景并将其设置为match_parent,将scaletype设置为centerCrop。它不适用于所有东西,但我很确定它适用于您的样品。
在您的情况下,您可以将您现在拥有的所有内容放在另一个容器中(例如RelativeLayout),然后将其居中并设置尺寸或使其成为wrap_content。然后,新的顶部容器应该是match_parent并且具有我作为孩子时谈到的imageview。
答案 1 :(得分:1)
对于要使用屏幕尺寸的布局,您应该保持图像的不同密度,例如
layout-large而不是layout-hdpi
修改强>
您希望拥有如下文件夹布局:
有关详细信息,请参阅此链接: 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,即使我的应用程序非常简单。
目前,您可以做的是:
简单方法:使用多个LinearLayout和权重。也可以使用权重内部的视图来制定有关位置和大小的规则。 Lint会告诉你这对性能有害,但是如果你的观点根本没有移动/调整大小,那应该没问题。
高级方法:创建自己的布局,它将准确地知道放置视图的位置(以及大小)与您提供的内容相关的位置。我过去做过,但我用的是imageViews而不是按钮(因为我不得不这样做)。
此方法也存在一个错误(也可在解决方案#1中找到):在某些屏幕上,它们的图像与背景图像不匹配。如果那不是你的情况,你也可以这样做。
硬核方式:使用openGl。使用像andEngine或LibGdx这样的第三方库会更容易。
网络开发者的方式:把它全部放在网站上,展示它,使用android界面处理触摸。
无按钮方式:如果您不想使用这些按钮,您可以使用简单的数学运算来了解用户按下的位置,而不是使用上述任何解决方案。