Android中TypedValue的工作

May*_*wal 1 android interface android-layout android-edittext

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

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

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

Ano*_*ous 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;
    }
Run Code Online (Sandbox Code Playgroud)