nexus7的长宽分别是多少dp?

看看dp定义

密度无关像素 (dp)

在定义 UI 布局时应使用的虚拟像素单位,用于以密度无关方式表示布局维度 或位置。
密度无关像素等于 160 dpi 屏幕上的一个物理像素,这是 系统为“中”密度屏幕假设的基线密度。在运行时,系统 根据使用中屏幕的实际密度按需要以透明方式处理 dp 单位的任何缩放 。dp 单位转换为屏幕像素很简单: px = dp * (dpi / 160)。 例如,在 240 dpi 屏幕上,1 dp 等于 1.5 物理像素。在定义应用的 UI 时应始终使用 dp 单位 ,以确保在不同密度的屏幕上正常显示 UI

注意细节

定义中提到一个公式
\[\cfrac{px}{dp}=\cfrac{dpi}{160}\]
(命名为公式一)

我们可以理解成这样
\[\cfrac{1px}{1dp}=\cfrac{160dpi}{160}\]

举个栗子

我们现在有台nexus7 ,就是下面这个样子

已知:

7英寸,1280*800 的分辨率。

求:
宽高的dp

根据公式:
\[ dpi = \cfrac{\sqrt{高^2 + 宽^2}}{ 设备英寸数 }\]

(命名为公式二)

所以nexus的dpi为

\[\cfrac{\sqrt{1280^2 + 800^2}}{7} = 215.64 \approx 216dpi\]

note: 因为dpi的意思就是每英寸像素点啊,7英寸就是表示斜对角线为7英寸。所以我们要用像素点数勾股定理后除以7

我们把公式一变形一下

\[dp = \cfrac{160}{dpi} \times px\]

计算高dp,代入已知参数
\[高dp = \cfrac{160}{213} \times 1280 \approx 961dp\]

同理,计算宽dp
\[宽dp = \cfrac{160}{213} \times 800 \approx 600dp\]

总结,宽高dp分别为 600dp和961dp.

走多一步

论点一: 分辨率不变的情况下,dp和英寸大小成正比。

证明:
结合公式一和公式二可以得出以下公式
\[dp = \cfrac{160}{\cfrac{\sqrt{宽^2+高^2}}{屏幕英寸}} \times px\]

简化可得
\[dp = \cfrac{160 \times px \times 屏幕英寸}{\sqrt{宽^2+高^2}}\]

可以得出,宽高不变的情况下,英寸的提高,会导致dp直接提高,符合谷歌一开始设定,同样分辨率的设备,10英寸的平板是5英寸的手机两倍dp,有更多的设计空间。

论点二: 英寸不变的情况下,dp和宽高比有关系

证明:
我们可以把论点一的公式简化成这个样子

当求的dp为宽时

\[dp = \frac{160^2 \times 英寸^2}{1+\frac{高^2}{宽^2}}\]

当求的dp为高时

\[dp = \frac{160^2 \times 英寸^2}{1+\frac{宽^2}{高^2}}\]

从这两个公式可以看出来,英寸不变的情况下,dp只和宽高比有关系
2k的galaxy s7 edge 和1080p的一加3 ,它们都是5.5in,他们的宽都是1440dp