我对Android上的dp感到非常困惑。
从参考资料中我了解到,dp值的基础是160。
因此,80dp宽度不应该等于宽度为屏幕50%的视图吗?但在我的Nexus One上,宽度似乎约为300dp。
我错过了什么?
提前感谢。
我对Android上的dp感到非常困惑。
从参考资料中我了解到,dp值的基础是160。
因此,80dp宽度不应该等于宽度为屏幕50%的视图吗?但在我的Nexus One上,宽度似乎约为300dp。
我错过了什么?
提前感谢。
"dp"代表“密度无关像素”(这也是为什么之前被称为“dip”,尽管我现在更喜欢使用“dp”)。
将其视为其他单位--“in”(英寸),“mm”(毫米)等。 它允许您提供一个基于屏幕密度缩放的大小。
我们定义mdpi为基础密度,因此在mdpi屏幕上的“10dp”将导致确切的10像素。 在hdpi屏幕上,它将导致15个像素,因为hdpi是1.5 * mdpi。
请注意,尽管各种密度的常数类似于DPI(mdpi为160等),但密度不完全等同于DPI。它是一个抽象的缩放因子,用于调整屏幕dpi,但并不试图完全反映它。(您可以使用“in”,“mm”等来获得精确大小,但99.9%的情况下,这不是您想要的,因此请坚持使用“dp”)。这极大地简化了每个人的生活,因为您不需要处理许多Android设备具有略有不同的UI空间量,因为它们各自具有略有不同的屏幕DPI。此外,设备制造商可以选择其设备的密度以实现所需的UI--例如,Samsung Tab使用比实际DPI大得多的密度,从而导致整体较大的UI。
每英寸160个点。因此,80dp大约是1/2英寸。
我不完全理解你的问题,但我建议你看看这个,如果你还没有。
http://developer.android.com/guide/practices/screens_support.html
像素 = dps * (密度 / 160)
密度无关像素(简称:dp)是一种虚拟像素单位,将在应用程序运行时确定。
公式: 1 dp = 160 dpi 屏幕上的 1 像素。 因此,160 dpi 是系统的基准密度。
将 dp 单位转换为屏幕像素非常简单。 实际设备像素(px)= dp(1)*(设备的 dpi / 160(基线)) 为了简单起见:px = dp *(dpi / 160)
例如: 如果一个 240 dpi 的设备启动您的应用程序,则 1 dp 等于 1.5 个实际设备像素。
结论: DP 自动处理任何缩放到更大或更小的设备。硬编码像素的时代已经过去了。DP 可确保在不同屏幕密度下适当缩放。