【发布时间】:2011-09-08 01:54:33
【问题描述】:
我需要知道安卓设备的屏幕尺寸以支持多种屏幕尺寸的应用程序。
【问题讨论】:
-
按屏幕尺寸是否需要设备的物理尺寸。前 5 英寸还是 10 英寸??
标签: android screen-size
我需要知道安卓设备的屏幕尺寸以支持多种屏幕尺寸的应用程序。
【问题讨论】:
标签: android screen-size
在支持不同的屏幕尺寸方面,我先看看Screen Support Reference,也许能更好地解决你的问题。要查看特定尺寸的列表,请查看 Table 2
【讨论】:
我认为没有所有现有屏幕尺寸的完整列表,因为新设备一直在问世。您看过Screen Sizes and Densities 上的页面和Supporting Multiple Screens 上的文档吗?
【讨论】:
<supports-screens> 标签来指明您的应用支持的屏幕尺寸。还有与清单中uses-sdk 标记的targetSdkVersion 属性的交互。如果您的 sdk 级别太低,运行更高级别的设备(和模拟器)可能会切换到应用程序的兼容模式,这可能会将您的应用程序限制为模拟 HVGA 屏幕。
Android 支持多种屏幕尺寸。没有特定屏幕尺寸的列表。只有大概的范围。在"Supporting Multiple Screens" 阅读更多内容。
【讨论】:
看这张表:http://developer.android.com/guide/practices/screens_support.html#testing
您可以使用此处的饼图了解相对屏幕尺寸的使用情况:http://developer.android.com/resources/dashboard/screens.html
有关屏幕尺寸、分辨率和 dpi 值的列表,请查看:http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density
要计算实际 dpi 值,请在此处查看:http://en.wikipedia.org/wiki/Pixel_density#Calculation_of_monitor_PPI
【讨论】:
不同的屏幕尺寸如下。
xlarge screens are at least 720dp 960dp
large screens are at least 480dp x 640dp
normal screens are at least 320dp x 470dp
small screens are at least 320dp x 426dp
如果您打算制作一个支持多种设备的应用程序,您还必须创建不同的布局目录来放置不同的布局。
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
如果您打算添加不同尺寸的图像,请将它们相应地放在以下文件夹中。 Android OS 会自动从中取出最合适的图像。
res/drawable-ldpi/my_icon.png // bitmap for low density
res/drawable-mdpi/my_icon.png // bitmap for medium density
res/drawable-hdpi/my_icon.png // bitmap for high density
res/drawable-xhdpi/my_icon.png // bitmap for extra high density
【讨论】:
这里有一个小功能可以知道你的设备的英寸大小,以防你需要它来支持多尺寸屏幕:
public double getInchSize()
{
DisplayMetrics metrics = getResources().getDisplayMetrics();
return Math.hypot(metrics.widthPixels/metrics.xdpi, metrics.heightPixels/metrics.ydpi)
}
希望对你有帮助
【讨论】:
它来了!
来自 http://en.wikipedia.org/wiki/Comparison_of_Android_devices 的 html 源解析为:
import re
s = ""
with open("sizes.html", "r") as src:
s = src.read()
res = re.findall('([0-9]+)\s*[×xX]\s*([0-9]+)', s)
sizes = set()
for match in res:
size_int = [int(match[0]), int(match[1])]
size = (min(size_int), max(size_int))
if size not in sizes:
sizes.add(size)
sorted_sizes = list(sizes)
sorted_sizes.sort(key=lambda sz: sz[0])
for sz in sorted_sizes:
print(sz)
(原谅我的蟒蛇)
【讨论】: