测量单位 px、dip、dp 和 sp 的区别是什么?
当前回答
像素(px) - 相应于屏幕上的实际像素,如果您想要提供的绝对像素的宽度或高度。
总是使用 dp 和 sp 只. sp 用于字体大小和 dp 用于其他任何东西. 它将使 Android 设备与不同的密度兼容的 UI. 您可以从 https://www.google.com/design/spec/layout/units-measurements.html#units-measurements-density-independent-pixels-dp- 了解更多关于 pixel 和 dp 的信息。
来源 URL:- http://www.androidtutorialshub.com/what-is-the-difference-between-px-dp-dip-sp-on-android/
其他回答
SDP - 一个可扩展的尺寸单位 - 基本上它不是一个单位,而是不同屏幕大小的尺寸资源。
在 Intuit 中尝试 sdp 图书馆. 解决单位问题非常方便,您可以快速支持多个屏幕。
使用
android:paddingBottom="@dimen/_15sdp" for positive and android:layout_marginTop="@dimen/_minus10sdp" for negative sdp sdp
它在每个尺寸的值-sw<N>dp 文件夹(sw = 最小Width)中具有相当值。
注意
在大多数情况下,你仍然需要为平板电脑设计不同的布局。
例子
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_minus10sdp"
android:paddingBottom="@dimen/_15sdp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="♡"
android:textColor="#ED6C27"
android:textSize="@dimen/_70sdp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="U"
android:textColor="@android:color/black"
android:textSize="@dimen/_70sdp" />
</LinearLayout>
你可以用db为文本大小,但我更喜欢ssp为文本大小。
更多详细信息请参阅图书馆 GitHub 页面。
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 每英寸点
同样,如果你有两个相似的屏幕大小,但不同的像素密度,说一个是800到1280像素(320dpi),而另一个是400到640像素(160dpi),我们不需要定义完全不同的布局为这两个设备,因为我们可以测量资产的密度独立像素,这是相同的两个设备。
尺寸独立的像素(sp)是字体大小的偏好单位. 为了可用性,Android允许用户自定义他们的设备的字体大小. 有问题阅读文本的用户可以增加他们的设备的字体大小. 你通常可以在显示设置在你的手机或平板电脑的字体大小下找到这个选项. 它经常也通过可用性设置可用。
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;
这可能当然是供应商依赖的,因为它在包 / 应用程序 / 设置。
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件