3

我的应用程序中有一个奇怪的错误,Paint.measureText(String text)当我认为它应该返回相同的值时,它返回了不同的答案。最终,当我使用 Paint 对象绘制文本时,我将其追踪到正在更改的 ANTI_ALIAS_FLAG,即

Paint text_paint = new Paint(); 
text_paint.setStyle(Paint.Style.FILL);
text_paint.setTextSize(50);
text_paint.setColor(Color.BLACK);    
Log.d("MyApp","AA1="+text_paint.isAntiAlias());
canvas.drawText("SomeText", 10, 10, text_paint);
Log.d("MyApp","AA2="+text_paint.isAntiAlias());

使用 Android 版本 4.2.1 生成日志输出

04-29 19:30:00.702: D/MyApp(18806): AA1=false
04-29 19:30:00.707: D/MyApp(18806): AA2=true

并且结果measureText取决于这个 ANTI_ALIAS_FLAG。所以我的问题是

  1. 这个 ANTI_ALIAS_FLAG 是什么,是什么决定了将其设置为真还是假?
  2. 在我看来,这样的调用canvas.drawText(...)不应该改变正在使用的绘画对象,那么到底发生了什么,这是一个错误吗?

4

0 回答 0