twi*_*wig 33 size android text resolution drawtext
对于我的Android游戏,我有一些电话Canvas.drawText().
为了测试,我使用标准的字体大小似乎工作正常.
但是,当我将分辨率提高到更高的密度时,会自动加载较大的图像,但文本现在非常小.
有没有一种简单的方法来计算应该绘制文本的大小,还是我必须手动执行此操作?
Jos*_*arl 79
最简单的方法是使用与比例无关的像素(sp)来定义资源中的字体大小- 此单位就像密度无关的像素(dp或dip),因为它考虑了屏幕密度,但它也考虑了用户的字体大小设置.
要添加新维度dimens.xml,请在res/values文件夹中创建一个文件,然后输入以下代码以添加名称为的新维度myFontSize:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="myFontSize">20sp</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用应用程序获取文本大小
int scaledSize = getResources().getDimensionPixelSize(R.dimen.myFontSize);
Run Code Online (Sandbox Code Playgroud)
生成的大小将正确缩放,以考虑当前的屏幕密度和字体大小设置.
有关更多信息,请参阅更多资源上的Android开发人员页面.
您可以使用简单的数学运算自行完成:
您需要计算一个关系,该关系可以为任何画布大小绘制相同大小的文本,因此请使用实际画布大小,如下所示:
double relation = Math.sqrt(canvas.getWidth() * canvas.getHeight());
Run Code Online (Sandbox Code Playgroud)
但是这个数字太大了,所以将它除以适合您需要的一个,比如说 250:
relation = relation / 250;
Run Code Online (Sandbox Code Playgroud)
现在您可以像这样设置文本大小:
paint.setTextSize((float) (myFontSize * relation));
Run Code Online (Sandbox Code Playgroud)
您不必将关系除以任何数字,但在这种情况下,您将不得不为变量使用非常小的字体大小myFontSize。对我来说,250 可以很好地使用可以适应任何屏幕尺寸的常规字体大小,因为您已经在计算画布中的像素尺寸。
| 归档时间: |
|
| 查看次数: |
28567 次 |
| 最近记录: |