標籤:
先看一個例子:
int size = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3, context.getResources().getDisplayMetrics());
這行代碼是把在當前螢幕解析度的狀態下將dip為3的值轉換成單位為px值
下面是API介紹:
public static float applyDimension (int unit, float value, DisplayMetrics metrics) Since: API Level 1
Converts an unpacked complex data value holding a dimension to its final floating point value. The two parameters unit and value are as in TYPE_DIMENSION.
Parameters
| unit |
The unit to convert from. |
| value |
The value to apply the unit to. |
| metrics |
Current display metrics to use in the conversion -- supplies display density and scaling information. |
Returns
- The complex floating point value multiplied by the appropriate metrics depending on its unit.
查看其在framework中的源碼
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; }
如果傳入的unit為COMPLIEX_UNIT_PX,則傳回值與傳入的value值保持一致;反之會根據一定的計算方式轉換成px並返回。
android.util.TypedValue.applyDimension