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



所以我试图绘制文本和笔画圆,但它们在不同大小、不同像素密度的设备上看起来不同。

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

我建议您使用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));

最新更新