测量单位 px、dip、dp 和 sp 的区别是什么?
当前回答
dpi 每英寸点
同样,如果你有两个相似的屏幕大小,但不同的像素密度,说一个是800到1280像素(320dpi),而另一个是400到640像素(160dpi),我们不需要定义完全不同的布局为这两个设备,因为我们可以测量资产的密度独立像素,这是相同的两个设备。
尺寸独立的像素(sp)是字体大小的偏好单位. 为了可用性,Android允许用户自定义他们的设备的字体大小. 有问题阅读文本的用户可以增加他们的设备的字体大小. 你通常可以在显示设置在你的手机或平板电脑的字体大小下找到这个选项. 它经常也通过可用性设置可用。
其他回答
我将详细介绍如何准确地将 dp 转换为 px:
如果在 mdpi 设备上运行,150 x 150 px 图像将占屏幕空间的 150 * 150 dp. 如果在 hdpi 设备上运行,150 x 150 px 图像将占屏幕空间的 100 * 100 dp. 如果在 xhdpi 设备上运行,150 x 150 px 图像将占屏幕空间的 75 * 75 dp.
相反的方式:说,你想添加一个图像到你的应用程序,你需要它填写一个100 * 100dp控制。
100 * 100 px 图像为 mdpi 150 * 150 px 图像为 hdpi 200 * 200 px 图像为 xhdpi
屏幕大小 实际的物理大小,测量为屏幕的直径. 为了简单,Android将所有实际的屏幕大小组成四个通用大小:小,正常,大,和超大。 屏幕密度 屏幕的物理区域内的像素数量; 通常称为dpi(点每英寸)。 例如,一个“低”密度屏幕在特定物理区域内有较少的像素,比较
当添加多个屏幕支持时,应用程序不直接与分辨率工作;应用程序应仅涉及屏幕大小和密度,如一般化大小和密度组所规定的。
屏幕尺寸和密度
我遇到了一篇关于设计不同屏幕分辨率的Android应用程序UI的好文章,我想把它留在这里,只是在这个领域寻找的人。 是的,我知道它在某种程度上被描述在谷歌文件(并在上面的帖子中提到),我读到它,但它对我来说并不好(是的,我可能太愚蠢)。
dp 是 dip. 使用它为一切(边缘,粘贴等)。
只用 sp 为 {text-size}。
为了在不同的屏幕密度上获得相同的尺寸,Android在运行时间中将这些单元翻译成像素,所以没有什么可怕的数学。
在不同屏幕大小上看到 px、dp 和 sp 的差异。
此分類上一篇
来源:Android编程:The Big Nerd Ranch 指南
一个虚拟像素单位,你应该在定义UI布局时使用,以以密度独立的方式表达布局尺寸或位置。 如上所述,密度独立的像素相当于160dpi屏幕上的一个物理像素,这是系统对“中间”密度屏幕所承认的基密度。
dp = px * 160 / dpi
MDPI = 160 dpi || Therefore, on MDPI 1 px = 1 dp
For example, if you want to convert 20 pixel to dp, use the above formula,
dp = 20 * 160 / 160 = 20.
So, 20 pixel = 20 dp.
HDPI = 240 dpi - So, on HDPI 1.5 px = 1 dp
XHDPI = 320 dpi - So, on XHDPI 2 px = 1 dp
XXHDPI = 480 dpi - So, on XXHDPI 3 px = 1 dp
For example, let us consider Nexus 4.
If 24 pixels to be converted to dp and if it is a Nexus 4 screen, developers can
convert it to dp easily by the following calculation :
dp = 24 * 160 / 320 = 12 dp
Screen dimension:
768 x 1280 pixel resolution (320 ppi or 320dpi)
Optional (screen size):
4.7" diagonal
尝试从创意团队获得所有像素值的数字,否则准确性损失会发生,同时加倍为0.5。
SP
使用 sp 为字体大小. 然后只有在应用程序内部的字体会改变,而设备字体大小会改变(即显示 -> 字体在设备上)。 如果你想在应用程序内部保持静态字体大小,你可以给字体大小在 dp. 在这种情况下,它永远不会改变。
推荐文章
- Android:为什么视图没有maxHeight ?
- 如何获得具有已知资源名称的资源id ?
- 在Android上将字符串转换为整数
- 为什么“System.out。”println“工作在Android?
- WebView显示err_cleartext_not_allowed尽管站点是HTTPS
- Android M权限:对shouldShowRequestPermissionRationale()函数的使用感到困惑
- 为什么构建类型与产品风味不同?
- 我如何在一个片段中访问getSupportFragmentManager() ?
- 调试在哪里。Android Studio中的密钥存储库
- 从资产中读取文件
- 在不活动的地方调用getLayoutInflater()
- 设置Android布局元素的背景颜色
- 错误:'keytool'不能被识别为内部或外部命令、可操作程序或批处理文件
- 在应用程序本身中更改Locale
- 为什么优秀的UI设计对某些开发者来说如此困难?