Android中Paint的一些使用心得记录

时间:2023-02-04 16:23:16

Paint是Android api中绘制文字,图形的重要类,位于android.graphics包下,这个类早早就出现了。类似于JavaScript中的Paint,Paint的使用也离不开Canvas。

Paint实际不是真正的"画笔",实际作"画"的是底层,对graphics包下的这个Paint是不可见的,这个Paint封装了各种作画的参数。

初始化Paint,可以直接通过默认的构造器

Paint mPaint = new Paint();

常用的方法。(getXXX,isXXX等省略)

  • setTextSize() :如果要绘制文字,一般需要设置字体大小,不然默认绘制12px,该方法决定两个小写'x'字母的宽度。
  • setColor(int color):传入一个十六进制的颜色参数,可设置ARGB的颜色
  • setStyle(int style): 设置画笔风格,有FILL,STROKE,FILL_AND_STROKE三种选择
  • setStrokeWidth(float width):设置画笔粗细
  • setAntAlias(boolean):设置是否防锯齿
  • setDither(boolean):设置是否防抖动。在绘制图片时,如果有超过屏幕能显示最大效果时,这个决定了如何down-sample(降低取样)。如果为false,绘制速度会变快,但绘制的颜色精度会下降(比如8888->565),true则会试图在这个down-sample中 修正这些错误,使得画面较为柔和。
  • setFlags(int flag):设置画笔的各项参数,与setXXX方法有同样的效果,比如setFlags(ANTI_ALIAS_FLAG) 等效于setAntiAlias(true)
  • 无清除flag的方法,Paint提供reset()方法,重置画笔所有参数

内部类

  • Paint.FontMetrics和Paint.FontMetricsInt:包含float或int类型的五个值-top,bottom,ascent,descent,leading。分别代表在给定的一个textsize下,一段文字可以绘制的最高处的Y值;可绘制的最低处的Y值;一段文字中单个字符可以到达的最高Y值;一段文字中单个字符可以到达的最低Y值;字体间的间距。在android字体坐标系中,默认原点位于左下角,X轴与基线重合,所以top,ascent为负值,bottom,descent为正值。不同的字体,在同样的文本和size下,这五个值也不尽相同。FontMetrics类中的五个为Float,FontMetricsInt则为Int类型,是前者向下取整的结果。
  • Paint.Align:包括LEFT,CENTER,RIGHT。以原点为基准,分别绘制在原点右侧,原点两侧,原点左侧。给人的感觉好像是原点移动了。