尊重作者劳动,转载请注明出处
在自定义控件和绘图的时候经常用到画笔Paint类.
今天来总结一下它的函数方法:
float accent()
在Paint绘制文字时有效。根据设置的字体和文字大小,返回baseline之上的高度,也就是上坡度。
int breakText (char[] text, int index, int count, float maxWidth, float[] measuredWidth)
Measure the text, stopping early if the measured width exceeds maxWidth. Return the number of chars that were measured, and if measuredWidth is not null, return in it the actual width measured.
在处理文本时会用到。截取一段字符串在给定宽度内的文本。如果文本超出了给定的最大宽度,那么就返回截取的字符个数。如果没有超出最大宽度,那么就返回实际的
- text:要处理的文本,不能为null;
- index:开始的位置;
- count:截取的字符数量;
- maxWidth:给定的最大宽度;
- measuredWidth:一个可选项,可以为空,不为空时返回真实的测量值;
- 返回值:返回截图的字符个数。
setAlpha(int a)
设置画笔的透明度
setARGB(int a, int r, int g, int b)
设置透明度和RGB颜色值。
setColor
设置画笔颜色。
setAntiAlias(boolean a)
打开抗锯齿。不过这个抗锯齿是依赖于算法的,在我们绘制棱角分明的图像时,比如一个矩形、一张位图,我们不需要打开抗锯齿。
setColorFilter(ColorFilter filter)
设置颜色过滤。这个就比较麻烦了,一般是传入ColorMatrixColorFilter、LightingColorFilter和PorterDuffColorFilter这三个类的子类。简单的说就说用来调节颜色的,详细的讲起来会很复杂。后面有时间单独写一篇。
setDither(boolean dither)
设置防抖动。就说让颜色的变化更自然。来看一下设置了防抖动和没有设置防抖动的效果。setFakeBoldText (boolean fakeBoldText)
设置文本仿粗体。
setFilterBitmap(boolean filter)
如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示速度,本设置项依赖于dither和xfermode的设置。
setFlags (int flags)
设置标签,通过标签来配置Paint对象。
setFontFeatureSettings(String settings)
设置字体的样式。源码中的注释是和CSS样式很像。
setHinting(int mode)
设置隐藏模式。可以设置为HINTING_OFF或者HINTING_ON。
setLetterSpacing(float letterSpacing)
设置行间距,默认是0。
setLinearText (boolean linearText)
是否打开线性文本标识。这个在Linear Layout中也有这个属性。
setMaskFilter(MaskFilter maskfilter)
简单的说就说给图片加特效。详细的话,请自行百度MaskFilter 。
setPathEffect(PathEffect effect)
设置路径轨迹的效果。通常我们会调用canvas.drawPath(mPath, mPaint);来绘制一段path。默认情况下是这种效果
详解Paint的setMaskFilter(MaskFilter maskfilter)
setShader(Shader shader)
设置或者清空shade对象。
setShadowLayer(float radius, float dx, float dy, int shadowColor)
radius表示阴影的扩散半径;dx和dy表示阴影平面上的偏移值;shadowColor就不说了阴影颜色。
注意: 这个方法不支持硬件加速,所以我们要测试时必须先关闭硬件加速。
setStrokeCap(Paint.Cap cap)
设置画笔的笔触风格。可选参数Paint.Cap下的ROUND、SQUARE、BUTT 。
setStrokeJoin(Paint.Join join)
设置接合处的形态。可选参数:BEVEL,MITER,ROUND。
setStrokeWidth(float width)
当画笔样式(style)为STROKE或FILL_OR_STROKE时(空心样式时),设置笔刷的粗细度。
setStrokeMiter(float miter )
设置笔画的倾斜度。
setStyle(Style style)
设置画笔的样式:
①Paint.Style.STROKE:描边
②Paint.Style.FILL_AND_STROKE:描边并填充
③Paint.Style.FILL:填充