对于我的Android游戏,我有一些拨打电话Canvas.drawText()
。Android:Canvas.drawText()在不同屏幕分辨率下的文字大小
为了测试,我使用标准字体大小似乎工作正常。
但是,当我将分辨率提高到更高密度时,较大的图像会自动加载,但文本现在非常小。
是否有一种简单的方法来计算文本应该绘制在什么尺寸或我必须手动执行此操作?
编辑:什么是editing my post @Suragch的要点?
对于我的Android游戏,我有一些拨打电话Canvas.drawText()
。Android:Canvas.drawText()在不同屏幕分辨率下的文字大小
为了测试,我使用标准字体大小似乎工作正常。
但是,当我将分辨率提高到更高密度时,较大的图像会自动加载,但文本现在非常小。
是否有一种简单的方法来计算文本应该绘制在什么尺寸或我必须手动执行此操作?
编辑:什么是editing my post @Suragch的要点?
最简单的方法是将带有刻度无关的像素的(sp
)单元定义的资源的字体大小 - 这单位是像密度独立像素(dp
或dip
),它考虑到了屏幕密度但它也考虑到用户的字体大小设置。
要添加一个新的层面在res/values
文件夹中创建一个dimens.xml
文件并输入以下代码以添加一个新的层面名为myFontSize
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="myFontSize">20sp</dimen>
</resources>
可以使用,然后让你的应用程序中的文本大小
int scaledSize = getResources().getDimensionPixelSize(R.dimen.myFontSize);
生成的大小将被正确缩放以考虑当前的屏幕密度和字体大小设置。请参阅Android Developers page on More Resources。
最简单的方法是在资源目录中定义字体大小,单位为scale-independent pixel (sp)
或density-independent pixel (dp)
。然后得到使用
int scaledSize = getResources().getDimensionPixelSize(R.dimen.font_size);
mTextView.setTextSize(scaledSize);
这将相应地根据当前屏幕密度/分辨率和用户的字体大小设置缩放文字大小的文字大小。
如何在资源目录中定义字体大小?
在文件夹res->values
中创建一个名为dimens.xml
的文件。然后复制下面的代码。
<resources>
<dimen name="font_size">25sp</dimen> // sp or dp accordingly
</resources>
标签<dimen>
的name
属性将被用作资源ID。
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension 我明白了。 – Trung 2011-06-23 07:17:13
当调用Canvas.drawText()
时,文本大小首先由在Paint
对象中传入的值确定,可通过Paint.setTextSize()
进行设置。文字大小将根据画布密度自动缩放Canvas
,可以使用Canvas.getDensity()
找到。
当在画布上绘制的绘画对象上设置文本大小时,请使用单位值dp
或sp
,并让Canvas处理缩放。
你需要计算吸引你的文字一样的大小,任何画布大小的关系,所以用实际的画布大小,像这样:
你可以用一个简单的数学运算自己做
double relation = Math.sqrt(canvas.getWidth() * canvas.getHeight());
但这个数字仅仅是太大,所以由一个适合您的需要将其划分,可以说250:
relation = relation/250;
现在,您可以设置文字大小是这样的:
paint.setTextSize((float) (myFontSize * relation));
您不必通过任何必要的鸿沟关系,但在这种情况下,你将不得不使用非常小的字体大小可变myFontSize
。对于我来说,250个作品可以很好地使用常规字体大小,可以适应任何屏幕大小,因为您已经在计算画布中的像素尺寸。
尝试使用[scaledDensity](http://developer.android.com/reference/android/util/DisplayMetrics.html#scaledDensity)? – 2011-03-20 12:10:02
嗨Marcin,是的,我已经使用过,乘数似乎没有太大的作用。据我所知,我也正在使用正确的乘法逻辑。 – twig 2011-03-21 23:32:04