Android - 相对于像素密度在画布上绘制

时间:2016-01-11 11:56:03

标签: android canvas

所以我试图绘制文字和描边圆圈,但它们在不同像素密度的不同尺寸设备上看起来不同。

我已经将文字大小和笔触宽度(Paint.setStrokeWidth())与getResources().getDisplayMetrics().density相乘。我已经尝试将其反转(1 / getResources().getDisplayMetrics().density),然后将文本大小和笔触宽度与反转密度相乘。如何在所有设备上使它们在物理上看起来相同?

1 个答案:

答案 0 :(得分:0)

我建议您使用dimensdp用于笔划宽度,sp用于文字大小,让Android SDK完成其余工作。

dimens.xml(示例值)中:

<resources>
    <dimen name="your_stroke_width">10dp</dimen>
    <dimen name="your_text_size">16sp</dimen>
</resources>

在您的代码中:

mPaint.setStrokeWidth(getContext().getResources().getDimensionPixelSize(R.dimen.your_stroke_width));

mTextPaint.setTextSize(getResources().getDimension(R.dimen.your_text_size));