您应该(不)如何在 Android 上使用与密度无关的像素?

How should you (not) use density independent pixels on Android?

一张海报 suggested using a project called SDP,作为对有关 Android 密度独立机制问题的回答。他辩解说:

It can help Android developers with supporting multiple screens

为什么总的来说这是一个糟糕的答案或一个坏主意?

多种原因:

不好的做法

这个项目采用的方法可以说是无用的,甚至是破坏性的。

破坏性,因为它打破了Android密度独立性。它拍摄的图像几乎不需要缩放以匹配显示器的实际每英寸像素 属性,因为它们是为该设备的通用密度而设计的。并且它扩大了规模,甚至高达 2.6 倍 on 10″ tablets。这一定会导致位图模糊或像素化。

没用因为:

无论如何,您首先不想在更大的设备上使用更大的物理尺寸。你不想拿一个应用程序,只是在更大的屏幕上缩放所有内容。这就是 Apple 在 iPad 于 2010 年和 people hated it.

首次问世时所做的事情

想要的是限制文本、按钮和其他 UI 不应过度拉伸的元素的宽度。您还想要更大的利润率。但是您可以通过为大屏幕提供替代布局来解决这个问题,而不是摆弄 Android 处理屏幕密度的方式。 documentation 同意我的观点。

如果您真的想要一些图形在大屏幕上更大(通常您不应该这样做,这里的第二张图片非常好,除了水平拉伸),那么您应该通过为每个要支持的 size/density 对提供可绘制对象来处理它。例如 drawable-hdpidrawable-xhdpidrawable-sw720dp-hdpidrawable-sw720dp-xhdpi。这样位图就不需要为那些更大的屏幕缩放,并且会以高质量显示。

误导

screenshots 不对每个设备使用相同的比例。 Nexus 7 看起来和 Nexus One 一样小。

保留比例的情况下,使用项目时的对比是这样的:

像这样,不使用时:

不相关

该项目处理物理尺寸而不是屏幕密度。它的作用是根据不同的物理屏幕尺寸缩放单位。

它不适用于提出的问题。可以解释为 "How does Android generalize an actual screen density?".