测量单位 px、dip、dp 和 sp 的区别是什么?
当前回答
dpi -
每英寸点 测量屏幕的像素密度。
px - 像素
编写屏幕像素
点 - 点
约 1/72 英寸,与物理屏幕大小相比。
在 - 英寸 - 至物理屏幕大小(1 英寸 = 2.54 厘米)。
mm - 毫米 - 与物理屏幕大小有关。
sp - 尺寸独立的像素。
基于用户的字体大小偏好,字体应该是“sp”。
迪普 -
dip = dp 密度独立的像素. 它根据屏幕密度而异. 在 160 dpi 屏幕上, 1 dp = 1 像素. 使用 dp 除了文本字体大小。
在标准情况下,dp 和 sp 用于字体大小 sp 和 dp 用于其他任何东西。
单元转换的公式:
px = dp * (dpi / 160 );
Density Bucket -> Screen Display => Physical Size => Pixel Size
ldpi -> 120 dpi => 0.5 x 0.5 in => 0.5 in * 120 dpi = 60x60 px
mdpi -> 160 dpi => 0.5 x 0.5 in => 0.5 in * 160 dpi = 80x80 px
hdpi -> 240 dpi => 0.5 x 0.5 in => 0.5 in * 240 dpi = 120x120 px
xhdpi -> 320 dpi => 0.5 x 0.5 in => 0.5 in * 320 dpi = 160x160 px
xxhdpi -> 480 dpi => 0.5 x 0.5 in => 0.5 in * 480 dpi = 240x240 px
xxxhdpi -> 640 dpi => 0.5 x 0.5 in => 0.5 in * 640 dpi = 320x320 px
其他回答
px = 指屏幕上的像素可用于像素计算 px = dp * (dpi / 160) 可用于 dip = 密度独立的像素相当于 dp sp = 只能用于文本
sp = 尺寸独立像素
dpi = 英寸点
我们应该避免使用 sp. 我们应该使用 dp 支持多个屏幕。
Android 支持不同的屏幕分辨率
ldpi (低) ~120 dpi mdpi (中) ~160 dpi hdpi (高) ~240 dpi xhdpi (超高) ~320 dpi xxhdpi (超高) ~480 dpi xxxhdpi (超高) ~640 dpi
与其他密度相同。
像素 = dp * (密度 / 160)
因此, 240 dpi 裝置的 1 dp 將有 = 1 * (240/160) = 3/2 = 1.5 像素。
480 dpi 裝置的 1 dp 將有 = 1 * (480/160) = 3 像素。
使用此 1.5 和 3 像素的知识,一个软件工程师可以设计不同的密度的布局。
要检查任何设备的屏幕参数:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Toast.makeText(
this,
"4:" + metrics.heightPixels + "," + metrics.density + ","
+ metrics.densityDpi, Toast.LENGTH_LONG).show();
我已经计算了下面的公式,以便将 dpi 转换为 dp 和 sp
1) dp:(密度独立的像素)
像素的数量在一个单位的dp将增加,因为屏幕分辨率增加(当你有更多的点/像素每英寸)。相反,在较低分辨率的设备,像素的数量在一个单位的dp将减少。 因为这是一个相对单位,它需要一个基线与比较。 这个基线是一个160dpi屏幕。 这是方程式: px = dp *
2) sp:(尺寸独立的像素)
该单位按屏幕dpi(类似于dp)以及用户的字体大小偏好进行规模。
3、PX(像素)
实际的像素或屏幕上的点。
此分類上一篇
更多详细信息您可以参观
Android 開發人員指南 > 尺寸 Android 開發人員指南 > 屏幕
由官方文档复制的答案所列的 dp 和 sp 单元之间的差异可以通过更改“设置”>“可用性”>“长文本”选项在运行时看到。
大文本选项使文本变成1.3倍。
private static final float LARGE_FONT_SCALE = 1.3f;
这可能当然是供应商依赖的,因为它在包 / 应用程序 / 设置。
推荐文章
- 在android中从上下文获取活动
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?
- 在Android应用程序中显示当前时间和日期
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 更改单选按钮的圆圈颜色
- 如何在android中复制一个文件?
- adb找不到我的设备/手机(MacOS X)
- 如何在新的材质主题中改变背面箭头的颜色?
- androidviewpager与底部点