Android TypedValue.applyDimension()的用法

来源:互联网 发布:中关村软件下载中心 编辑:程序博客网 时间:2024/05/21 09:49

这个方法的作用是 把Android系统中的非标准度量尺寸转变为标准度量尺寸 (Android系统中的标准尺寸是px, 即像素)

Android系统中的尺寸单位有: 

标准单位: px (px是安卓系统内部使用的单位, dp是与设备无关的尺寸单位 )

非标准单位: dp, in, mm, pt, sp

TypedValue.applyDimension()方法的功能就是把非标准尺寸转换成标准尺寸, 如: 

dp->px:  TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, context.getResources().getDisplayMetrics());

in->px: TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_IN, 20, context.getResources().getDisplayMetrics());

mm->px: TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 20, context.getResources().getDisplayMetrics());

pt->px: TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PT, 20, context.getResources().getDisplayMetrics());

sp->px: TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, context.getResources().getDisplayMetrics());


如果你还是不太理解, 请看applyDimension()方法的源码:  

/** * Converts an unpacked complex data value holding a dimension to its final floating  * point value. The two parameters <var>unit</var> and <var>value</var> * are as in {@link #TYPE_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;}


0 0
原创粉丝点击