由于特殊需求,在我的android布局中,我使用"mm"来提供大小.在TextView中,我也提供了"mm"的尺寸.当我这样做时textView.getTextSize(),返回的大小始终是像素值.我想将该像素值转换为"mm".例如,如果我将字体大小设置为"2mm",那么在任何设备上,当我这样做时getTextSize(),我想得到"2mm".
我应该使用任何具体方法吗?我可以找到将"mm"转换为"像素"的答案,但无法找到任何关于转换的内容,反之亦然.
Nim*_*ary 11
我们使用TypedValue.java
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1,
getResources().getDisplayMetrics());
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)
所以你可以试试
Pix = mm*metrics.xdpi*(1.0f/25.4f);
MM = pix/metrics.xdpi*25.4f;
我要说的是一个更可靠的方法(它随着Android框架中应用的新见解而发展):
public static float pxToMm(final float px, final Context context)
{
final DisplayMetrics dm = context.getResources().getDisplayMetrics();
return px / TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1, dm);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7405 次 |
| 最近记录: |