当我们想要在Android中更改EditText的宽度时,我们使用以下代码行:
int px =(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,200,r.getDisplayMetrics());
有人可以解释一下这是如何工作的以及TypedValue.COMPLEX_UNIT_DIP会返回什么?
答案 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;
}