当缩放(布局,图像等)时,Android会根据两个因素确定缩放:屏幕大小和屏幕密度。
为什么需要两者?
为简单起见,我们假设一个应用程序具有单个布局文件,其中多个元素使用dp
单位定义,并且没有提供替代资源。
在这种情况下,应用缩放(清单2,Italic添加):
在运行时,系统可确保最佳显示效果 对于任何给定资源,当前屏幕具有以下过程:
系统使用适当的替代资源[...]
- 醇>
如果没有匹配的资源可用,系统将使用默认值 资源并根据需要向上或向下扩展以匹配当前 屏幕尺寸和密度
现在,鉴于上述情况,如果仅通过其中一个因素确定缩放比例,那么缩放方式是不可能的呢?
旁注:
许多在线资源都关注缩放功能,但我很难找到Android直接使用尺寸和密度因素的直接解释。
除此之外,引用次数最多的资源Supporting Multiple Screens在我第一次说明从Android 3.2开始不推荐使用四种广义尺寸(small, medium, large, xlarge
)时,对我来说还不清楚,后来反复引用这些概括就像它们仍然被使用一样(例如,当说“系统使用基于广义尺寸或密度的适当资源”时),其他文档页面也这样做(例如,表here)。
另一方面,上面引用的页面只定义了一种独立性 - 密度独立性,而不是大小独立性。因此,我感到困惑。
答案 0 :(得分:0)
系统使用默认资源并根据需要向上或向下缩放以匹配当前屏幕大小和密度
我认为这是以一种令人困惑的方式写的,但通常是正确的。基于屏幕密度(当未指定适当的替代资源时)缩放图像资源,但是可以基于屏幕大小“缩放”其他资源。例如,布局资源将在平板电脑上“放大”而不是电话。我真的不知道为什么文件记录者选择称之为“缩放”,但我相信这就是他们的意思。
换句话说,资源框架为密度(例如-xxhdpi
)和大小(例如-xlarge
或-sw720dp
)提供限定符,但将使用非合格资源作为后备
从Android 3.2开始,不推荐使用四种广义尺寸(小,中,大,xlarge),后来反复将这些概括称为仍然使用
他们 已弃用,但 仍在使用。您可以自由地创建一个layout-xlarge
目录并在其中放置替代布局,系统将在其认为合适时使用它们。它只是不推荐;这些天你最好使用-swXXXdp
限定词,因为这可以让你更好地控制你的布局。
答案 1 :(得分:0)
您通常需要更大的边距或不同位置的布局(例如并排而不是垂直),在较大的屏幕(小,大,xlarge等)中具有相同的视图。
但对于密度(mdpi,hdpi,xhdpi等),通常只需要更大的图像资源(原始分辨率和厚度更大),因此您不必依赖Android的默认放大图像算法来处理图像(导致模糊)图像)。