Android-相对于像素密度在画布上绘制
所以我试着画一个文本和一个笔画的圆圈,但在不同大小的设备上,它们的像素密度不同Android-相对于像素密度在画布上绘制,android,canvas,Android,Canvas,所以我试着画一个文本和一个笔画的圆圈,但在不同大小的设备上,它们的像素密度不同 我已经将文本大小和笔划宽度(Paint.setStrokeWidth())乘以getResources().getDisplayMetrics().density)。我也尝试过反转它(1/getResources().getDisplayMetrics().density),然后将文本大小和笔划宽度乘以反转的密度。如何使它们在所有设备上看起来物理上相同?我建议您使用dimens和dp来表示笔划宽度,使用sp来表示文本
我已经将文本大小和笔划宽度(
Paint.setStrokeWidth()
)乘以getResources().getDisplayMetrics().density
)。我也尝试过反转它(1/getResources().getDisplayMetrics().density
),然后将文本大小和笔划宽度乘以反转的密度。如何使它们在所有设备上看起来物理上相同?我建议您使用dimens
和dp
来表示笔划宽度,使用sp
来表示文本大小,剩下的就让安卓SDK来做
在dimens.xml中(示例值):
使用COMPLEX\u unit\u SP
尝试TypedValue#applyDimension(int单位、浮点值、DisplayMetrics)
并使用返回值将文本大小设置为文本大小?笔划宽度如何?对于这个问题,任何其他尺寸?笔划宽度对于绘制.样式.填充
(默认值)都不重要。我说我正在尝试制作一个笔划圆。好的,所以使用applyDimension
两次,使用COMPLEX\u UNIT\u SP
和COMPLEX\u UNIT\u DIP
<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));