有关自定义控件的许多内容,一直都想抽时间梳理一下,当然了梳理的内容不会很深,都是一些比较常用的类或者方法,主要是为了后续用到时方便查阅与参考。
本文主要整理的是Paint的一些基本使用方法和技巧,其中涉及到文字绘制的,涉及绘制文字时需要知道基线的坐标与View的坐标参考点是不同的,需要知道坐标之间的转换方式。另外需要知道有哪些方式可以测量已经绘制的文字所占的宽度,包括可以精确测量的方式,也有相对粗略的方式。
Paint常用方法
Paint在自定义控件中是一个比较常用的类,主要保存了颜色样式等绘制信息,通过一些属性指定如何绘制文字、图形。
如下是Paint的一些常用方法。
setARGB(int a,int r,int g,int b);
设置绘制的颜色,a代表透明度,r,g,b代表颜色值。
setAlpha(int a);
设置绘制图形的透明度,取值范围是[0-255],数值越小,越透明,颜色上表现越淡。
setColor(int color);
设置绘制的颜色,使用颜色值来表示,该颜色值包括透明度和RGB颜色。
setAntiAlias(boolean aa);
设置是否使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢。
setDither(boolean dither);
设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰,但是会损失性能。
setStyle(Paint.Style style);
设置画笔的样式,为FILL填充,FILL_AND_STROKE填充和描边,或STROKE描边。
setStrokeCap(Paint.Cap cap);
当画笔样式为STROKE或FILL_AND_STROKE时,设置笔刷的图形样式,如圆形样式Cap.ROUND,方形样式Cap.SQUARE 或者不设置Cap.BUTT。
setSrokeJoin(Paint.Join join);
设置绘制时各图形交汇处的结合方式,如Join.MITER锐角、Join.ROUND圆弧、Join.BEVEL直线。
setStrokeWidth(float width);
当画笔样式为STROKE或FILL_AND_STROKE时,设置笔刷的粗细度。
setXfermode(Xfermode xfermode);
设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果。
setShader(Shader shader);
设置图像效果,使用Shader可以绘制出各种渐变效果。
setColorFilter(ColorFilter colorfilter);
设置颜色过滤器,可以在绘制颜色时实现不用颜色的变换效果。
setShadowLayer(float radius ,float dx,float dy,int color);
在图形下面设置阴影层