的测量单位请问Paint.setTextSize(浮点)使用?(Which unit of meas

2019-07-30 16:09发布

我想在使用视图中绘制具有特定的高度(以像素为单位)的文本Canvas 。 你能简单地使用Paint.setTextSize(float)与像素数或本使用dpsp

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?