在Android中使用TypedValue

时间:2016-05-28 12:06:16

标签: android android-layout interface android-edittext

当我们想要在Android中更改EditText的宽度时,我们使用以下代码行:

int px =(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,200,r.getDisplayMetrics());

有人可以解释一下这是如何工作的以及TypedValue.COMPLEX_UNIT_DIP会返回什么?

1 个答案:

答案 0 :(得分:5)

COMPLEX_UNIT_DIP指定数字所指的测量单位。你写的内容翻译成" 200 DIP"。我相信你知道什么是DIP。如果它是COMPLEX_UNIT_SP那么200将被翻译为" 200 SP"

以下是applyDimension的源代码:

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;
    }