不同屏幕密度的布局像素转换工具

3
有没有工具可以将我的dpi单位转换为另一种基线密度?
当我定义布局文件时,我会设计一个320x480dpi单位的屏幕。但是在小型和大型设备上它并不合适。
但是,既然我们知道了ldpi、mdpi、hdpi和xhdpi的基线dpi,为什么就没有一个工具可以根据默认基线将我的宽度/高度定义在文件中,并将其缩放到这些不同密度,然后返回缺失的布局文件,以便它们可以正确地缩放到这些其他密度上呢?
这似乎很简单,可以节省开发人员大量的时间,有没有人知道是否有现有的程序可以做到这一点?

是的!这确实非常方便。改变图像大小以适应四个不同的尺寸一直都很费时间... - Ben Clayton
2个回答

3
我创建了一个工具,可以帮助你调整你的布局以适应平板电脑和小屏幕设备,并在这里发布了一篇博客文章:http://onemanmobile.blogspot.com/2012/04/how-to-scale-your-android-layouts-to.html。基本上,如果你想让你的应用程序适配所有设备和平板电脑,那么仅仅使用dp单位来定义你的布局是不够的,因为有四个不同的“密度桶”。这个工具可以将你的布局转换成适合这些密度桶的布局。我希望这篇博客、工具和答案能帮助其他人,我知道只需按下一个按钮,我的应用程序就可以在平板电脑上完美地运行,这感觉真好。

我不明白Android布局有什么问题,它们运行得很好。我读了你的博客,但不知道你要解决什么问题。谈论布局问题却没有屏幕截图来解释似乎有些奇怪。 - Ollie C
你有在平板设备上尝试过你的应用程序吗?比如Galaxy Tab 10.1?布局是否能够正确缩放?那么在HTC Wildfire或X10 mini这样的设备上呢?有没有任何内容被裁剪掉了?我使用dp单位定义所有内容,但是这两个问题仍然存在。我可以发布屏幕截图(很快就会),但它们只会显示我刚才说的内容。 - Andreas Rudolph
我经常在手机和平板电脑上进行测试(包括Tab 10.1)。我设计屏幕以便它们可以自适应任何屏幕尺寸并自定义布局。 - Ollie C

0

你的问题没有任何意义。你所要求的正是Android所做的。

如果你将一张图片放入一个文件夹中(如xhdpi),它会自动缩放到所有不同设备密度。

如果你为特定设备类别创建了一个布局,则正确的布局将用于正确的设备。

我建议不要为特定屏幕分辨率设计 - 这样做太多了。将屏幕分组成桶 - 如“手机”和“平板电脑”,或“小型手机”,“手机”,“大屏幕设备” - 指定标准,并为每个类别构建布局。为每个屏幕分辨率构建布局是愚蠢的游戏,因为有数百种Android设备。


我不是在问图片,而是在问XML中的布局文件。由于小、中、大和特大密度之间的比率已知,并且必须为每个密度定义布局文件,是否有工具可以简化转换过程?对于我来说,检查所有dip值并重新计算它们以适应更小和更大的密度屏幕似乎相当耗时。 - Andreas Rudolph
如果你正在设计一个Android应用程序,让其在每个设备上都完全一样,这是错误的。因为有数百种设备,这是不可能的。Android布局被设计为可以拉伸到屏幕尺寸和密度,UI组件相对于彼此定位(请参阅RelativeLayout)。Android应用程序应该被设计成UI可以缩放/拉伸/分割到不同类别的屏幕大小和密度 - 考虑每个屏幕分辨率是完全错误的方法。请阅读以下页面http://developer.android.com/guide/practices/screens_support.html - Ollie C
我不是在尝试每个像素点都完全一致地呈现,也不是在针对每个分辨率进行调整,我是在努力使其在不同密度下比例上看起来相同!尽管我将xml文件放在“layout-normal”文件夹中,但我的布局从正常密度到大屏幕或平板电脑密度并没有正确地拉伸。如何让xml布局文件中的值在普通密度屏幕上按比例拉伸至高密度屏幕? 显然这不会自动发生。 - Andreas Rudolph
你需要阅读文档并阅读一些Android书籍。听起来你正在使用px(像素)而不是dp(设备独立像素)指定尺寸。你应该使用dp而不是px。不过,由于你没有清楚地说明问题,很难确定具体情况。 - Ollie C
我很感激你的帮助尝试,但是无论我如何详细地定义我的布局单位为dp,它仍然不能正确缩放。与所有文档相反,例如在htc wildfire、galaxy s2和galaxy tab上,你不能定义一个以dp为单位的布局文件并且让它成比例地相同。如果你已经解决了这个问题,你是如何做到的呢? - Andreas Rudolph
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接