android 字体px转sp,Android的计量单位px/dip/dp/sp/pt/in/mm,及相互转换

本文详细介绍了Android中px、dip、dp、sp、pt、in和mm等单位的含义及其转换方法,强调了文字尺寸应使用sp,其他尺寸使用dp的原则,并提供了源码示例来解释单位转换的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

px   :原始像素点(raw Pixel)。 dip  :设备独立点(Device Independent Pixel),会根据屏幕的密度(density)进行缩放。dp   :同dip,是其简写。 sp   :缩放像素点(Scaled Pixel),会根据用户选择的字体大小(scaledDensity)进行缩放。

pt    :英磅(Point),英寸的1/72。

in    :英寸(Inch)。

mm :毫米(Millimeter)

建议:文字尺寸使用sp,其他尺寸使用dp。

//android.util.TypedValue

/**  complex unit: Value is raw pixels. */

public static final int COMPLEX_UNIT_PX = 0;

/**  complex unit: Value is Device Independent Pixels. */

public static final int COMPLEX_UNIT_DIP = 1;

/**  complex unit: Value is a scaled pixel. */

public static final int COMPLEX_UNIT_SP = 2;

/**  complex unit: Value is in points. */

public static final int COMPLEX_UNIT_PT = 3;

/**  complex unit: Value is in inches. */

public static final int COMPLEX_UNIT_IN = 4;

/**  complex unit: Value is in millimeters. */

public static final int COMPLEX_UNIT_MM = 5;

/**

* Converts an unpacked complex data value holding a dimension to its final

* floating point value. The two parameters unit and value are as in dimension.

*

* @param unit The unit to convert from.

* @param value The value to apply the unit to.

* @param metrics Current display metrics to use in the conversion --

* supplies display density and scaling information.

*

* @return The complex floating point value multiplied by the appropriate

* metrics depending on its unit.

*/

public static float applyDimension(int unit, float value,

DisplayMetrics metrics)

{

switch (unit) {

case COMPLEX_UNIT_PX: //原始像素点

return value;

case COMPLEX_UNIT_DIP: //设备独立点

return value * metrics.density;

case COMPLEX_UNIT_SP: //缩放像素点

return value * metrics.scaledDensity;

case COMPLEX_UNIT_PT: //英磅

return value * metrics.xdpi * (1.0f/72);

case COMPLEX_UNIT_IN: //英寸

return value * metrics.xdpi;

case COMPLEX_UNIT_MM: //毫米

return value * metrics.xdpi * (1.0f/25.4f);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值