我希望我的应用能够在任何Android设备上正确显示,无论屏幕尺寸,屏幕密度或屏幕高度与宽度的比例如何。我想支持与API 8一样古老的Android设备。我可以为纵向,横向和xlarge屏幕创建单独的布局,但除此之外,我不想为不同的密度或屏幕尺寸创建不同的布局。
我已阅读supporting multiple screens上的Android指南。我尝试遵循这些指导原则,例如,对于小部件我将其高度和宽度设置为wrap_content或fill_parent,并且我避免使用特定的像素测量。对于图像,我提供了不同密度的替代位图资源,或者有时我使用具有密度无关像素(倾角)的特定尺寸,因此系统将在屏幕上以不同的密度正确地调整它的大小。
在过去的两年里,我可能已经阅读过该指南数十次了。
据我所知,我可以为特定的屏幕尺寸和密度定义特定的资源(例如布局),但是我想支持几十部或几百部手机,所以这似乎是徒劳的。我看到that guide中的表3显示了屏幕的一些常见尺寸,但我想确保我的应用几乎可以在每部手机上运行。
在我看来,我需要知道的是最窄的屏幕(倾角)和最短的屏幕。也就是说,我想知道高度与宽度的比率。
例如,在纵向方向上,也许我有一个按钮列表或其他小部件。我真的想知道哪个手机最短:宽度与高度的比例最大,所以我可以看看我的布局是否在底部被切断了。也许我也有3个标签:我想知道最窄的屏幕,所以我可以确保标签没有在右侧切断。
如果我知道所有当前Android手机的h / w比率的最小值和最大值,那么对于肖像我只能测试两个Android虚拟设备(甚至只是Eclipse中的自定义屏幕)。
我已经开始研究Wikipedia’s list of Android devices,但有人必须有更好的方法。
答案 0 :(得分:3)
不幸的是,我还没有找到。我有这个链接:List of displays by pixel density但并非所有都是Android设备。我知道有几种奇怪的设备具有方形屏幕比率(motorolas)。但我只想坚持Google's screen sizes list,你应该对99.9%的用户安全。
Edit1:stats about screen sizes and densities
Edit2:根据我的经验,我通常会进行5次快速检查:
我觉得在这5个案例中我覆盖了所有屏幕密度(特别是检查图像大小),最常见的屏幕比例(4:3和16:9,检查所有布局元素是否可访问),以及最多两个常见的屏幕尺寸(手机和平板电脑)。