我相信您将屏幕尺寸与像素密度混合在一起:
来自开发指南:
- 该平台支持一组资源限定符,可让您在需要时提供特定于大小和密度的资源。特定于大小的资源的限定符是
small
、normal
、large
和xlarge
。特定密度资源的那些是ldpi
(低)、mdpi
(中)、hdpi
(高)和xhdpi
(超高)。限定符对应于上面所支持的屏幕范围中描述的广义密度。
- 该平台还提供了一个
<supports-screens>
manifest 元素,其属性android:smallScreens
, android:normalScreens
, android:largeScreens
, 并android:xlargeScreens
让您指定应用程序支持的通用屏幕尺寸。另一个属性 android:anyDensity 可让您指示您的应用程序是否包含对多密度的内置支持。
编辑:在回复中添加了我的评论。
使用评论中的示例,Archos 是 7 英寸屏幕,而 Nexus One 是 3.7 英寸屏幕。在像素数相同的情况下,Nexus One 的像素密度是原来的两倍。请记住,dpi 表示每英寸的点数。这意味着相同的图像在 Archos 中的渲染大小将是 Nexus One 中的两倍。
屏幕尺寸差异应在布局中处理。用于res/layout-normal
Nexus One 和res/layout-large
爱可视。这样,您将可以控制不同屏幕尺寸的完整布局(也许您需要限制一些在 Archos 中不必要大的小部件)并决定是要为您的可绘制对象保持固定尺寸还是将它们扩展为必要的。
或者,如果你真的想保持大小与屏幕成比例而不考虑屏幕大小并且不拉伸图像,那么你可以创建两组图像,即 image1-normal.png、image2-normal.png 和 image1-large.png,res/drawable-mdpi
和文件夹中的 image2-large.png 等,res/drawable-hdpi
您可以从 和 中的 xml 文件访问这些res/layout-normal
文件res/layout-large
。
总之,完整的需求应该由布局和可绘制的组合来处理:
- 连结一:
layout-normal
,drawable-hdpi
- 爱可视 7 :
layout-large
,drawable-mdpi
- 咻咻咻:
layout-xlarge
,drawable-mdpi