Android TypedValue.applyDimension()的用法

转载 2016年08月30日 16:55:54

这个方法的作用是 把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;
}

相关文章推荐

Android之TypedValue.applyDimension()方法的使用

Android之TypedValue.applyDimension()方法的使用TypedValue是一个工具类,他是一个动态容器。具体是做什么用这里不作介绍了。主要是要了解applyDimensio...

Android TypedValue.applyDimension()的用法

这个方法的作用是 把Android系统中的非标准度量尺寸转变为标准度量尺寸 (Android系统中的标准尺寸是px, 即像素) Android系统中的尺寸单位有:  标准单位:...
  • zchlww
  • zchlww
  • 2017年04月19日 10:50
  • 173

TypedValue.applyDimension 中dp和sp之间转化的真相

TypedValue.applyDimension 中dp和sp之间转化的真相    最近在看了许多关于dp-px,px-dp,sp-px,px-sp之间转化的博文,过去我比...

关于动态获取设置像素大小以及TypedValue.applyDimension()的使用

大多数情况下,我们要考虑手机的适配问题,以前做项目的时候,都是以480为标准,现在手机越来越发达,都以720为标准(大多数)进行屏幕适配.进行适配的话,免不了用dimens文件,在文件中存储需要用到的...

Android dip/dp sp px 单位转换小结 applyDimension

import android.content.Context; import android.util.TypedValue;/** * 说明:相对于官方内部转换 都+0.5f的原因:根据网上的...

Android之单位转换(TypedValue)

Android之单位转换文章链接知识点 dip/dpi和Android屏幕的说明; dp转dx/dx转dp的示例; TypedValue进行单位转换及示例; 新名词记录{TypedValue:Andr...

Android Intent的几种用法全面总结

  • 2013年09月25日 10:01
  • 64KB
  • 下载

android SharedPreferences的一般用法(存取清删)

之前做应用时碰到这样一个问题:在“A” Activity 要与 “B” Activity的Fragment进行通信传值,但是忽然发现无法拿到B中Fragment的Handler,又不能发送广播,短暂的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android TypedValue.applyDimension()的用法
举报原因:
原因补充:

(最多只允许输入30个字)