我想在使用视图中绘制具有特定的高度(以像素为单位)的文本Canvas
。 你能简单地使用Paint.setTextSize(float)
与像素数或本使用dp
或sp
?
Answer 1:
它采用的像素,但你可以把它转换使用此代码DP:
double getDPFromPixels(double pixels) {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch(metrics.densityDpi){
case DisplayMetrics.DENSITY_LOW:
pixels = pixels * 0.75;
break;
case DisplayMetrics.DENSITY_MEDIUM:
//pixels = pixels * 1;
break;
case DisplayMetrics.DENSITY_HIGH:
pixels = pixels * 1.5;
break;
}
return pixels;
}
Answer 2:
得到一个像素值,这种方法最简单的方法是简单地定义在dimens.xml文件中的相应DP或SP值和检索它像这样:
int sizeInPx = context.getResources().getDimensionPixelSize(R.dimen.sizeInSp);
实际上,你可以有3种方法根据您的使用需求:
getDimension()
返回像素的浮子。getDimensionPixelSize()
返回像素一个int。 这是相同的getDimension(),不同之处返回的值舍入到最接近的整数值,它可确保在非零输出值的非零输入值的结果(例如,0.1返回为1,而不是0)。getDimensionPixelOffset()
返回像素一个int。 这是相同的getDimension(),不同之处返回的值被截断(即向下舍入)。 结果可能是零。
Answer 3:
这些方法包括DisplayMetrics
可添加到未来的Android SDK。
像素沾:
public static float getDipFromPixels(float px) {
return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_PX,
px,
Resources.getSystem().getDisplayMetrics()
);
}
探底像素:
public static float getPixelsFromDip(float dip) {
return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dip,
Resources.getSystem().getDisplayMetrics()
);
}
文章来源: Which unit of measurement does the Paint.setTextSize(float) use?