安卓文本显示 - Canvas.drawText() 输出像素化

8
我的Android应用以几种不同的方式显示文本,它们之间存在一些令人讨厌的差异,我希望大家能帮忙解决。当我使用可能被称为“自动”的显示方法时,文本显示得非常好。通过自动方法,我指的是像Toast和Button小部件这样的工具,我只需提供文本,操作系统(或“环境”或其他)就会为我显示它。字母曲线优美,舒适易读。然而,在我的代码中,我处理文本显示时(在Surface Runner View中使用Canvas.drawText()),文本质量很差。文本仍然可读,但看起来很像像素化。字母看起来并不是最好的。我尝试过使用Paint.setTypeface()进行实验,例如使用Typeface.SANS_SERIF,但是当我的代码运行时,显示的质量总是很差。虽然可行,但质量较差。是否有其他人经历过这种情况?是否有任何解决方案?
1个回答

24

你也可以尝试使用Paint.setAntiAlias(boolean)Paint.setSubpixelText(boolean)进行调整。


2
我不确定setSubpixelText()对我的代码有什么影响,但是setAntiAlias()在文本上效果很好。我的代码中的图形部分有一些东西绘制在其他东西的上面,如果启用了抗锯齿,结果看起来有点奇怪...然而,根据需要切换抗锯齿开关并不成问题。非常感谢! - Rich
不客气!实际上,我也不确定亚像素文本选项具体是做什么的。如果我没记错的话,它类似于 Windows 的 ClearType 渲染技术,适用于液晶屏幕,但我找不到任何真正的文档资料来证实这一点。 - Kevin Coppock
setSubpixelText设置了SUBPIXEL_TEXT_FLAG,该标志在此处(http://developer.android.com/reference/android/graphics/Paint.html#SUBPIXEL_TEXT_FLAG)进行了(稀疏)文档化。 - CJBS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接