【发布时间】:2015-01-29 11:43:20
【问题描述】:
在类似拼字游戏的word game app 中,我正在尝试在黄色瓷砖上绘制黑色字母和值。
虽然这适用于 Windows 和 Mac 下的 Android 模拟器:
这在 Moto G、Nexus 1 和 4 等真实设备上不起作用(文本太大):
我在res/values/dimens.xml中定义了60sp和20sp(我也试过dp)的文字大小:
<resources>
<dimen name="big_tile_letter">60sp</dimen>
<dimen name="big_tile_value">20sp</dimen>
</resources>
然后在我的BigTile.java 类中使用它们:
int letterSize = context.getResources().getDimensionPixelSize(R.dimen.big_tile_letter);
mLetterPaint = new Paint();
mLetterPaint.setTextSize(letterSize);
mLetterPaint.setAntiAlias(true);
Rect letterBounds = new Rect();
mLetterPaint.getTextBounds(letter, 0, letter.length(), letterBounds);
mLetterX = 0.45f * (width - letterBounds.width());
mLetterY = 0.45f * (height + letterBounds.height());
canvas.drawText(letter, mLetterX, mLetterY, mLetterPaint);
我做错了什么?
【问题讨论】:
-
对字母和绘制它的框使用相同的尺寸单位(
sp、dp,等等)。 -
+1 但问题是:瓷砖是png images,字母和值是使用
canvas.drawText()方法绘制的字符串。 -
要么缩放 PNG 使其与文本大小成比例,要么将文本大小设置为 PNG 大小的比例。
-
绘制字母时确定画布比例正确吗?
标签: android android-resources text-size