zoukankan      html  css  js  c++  java
  • [Android Pro] Android TypedValue.applyDimension()的用法

    reference to  : http://blog.csdn.net/voo00oov/article/details/45745819

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

    Android系统中的尺寸单位有:

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

     

     

  • 相关阅读:
    分公司下拉框赋值-从后台传到前端jsp
    EASYUI DATAGRID加合计
    Quartz_TimeJob例子(C#)
    JAVA项目如何打开,打开乱码怎么办,字体太小怎么办,感叹号是什么情况
    下拉框设置下拉列表宽度
    获取dataset结果集的第一行第一列字段
    安装visio冲突
    ubuntu创建普通用户,解决远程登录失败
    ubuntu中文环境配置
    stackoverflow访问慢
  • 原文地址:https://www.cnblogs.com/0616--ataozhijia/p/6075884.html
Copyright © 2011-2022 走看看