- 1. 设置获取图形绘制、路径相关的
-
- 1.1 设置画笔颜色
- 1.2 设置透明度
- 1.3 设置颜色
- 1.4 设置画笔是否抗锯齿
- 1.5 设置图像是否使用抖动处理,会使得绘制出来的图片更加平滑和饱满,图像更加清晰
- 1.6 设置画笔倾斜度
- 1.7 设置画笔宽度
- 1.8 设置一个外来Paint画笔。
- 1.9 设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果
- 1.10 设置 MaskFilter,可以用不同的 MaskFilter 实现滤镜的效果,如滤化,立体等
- 1.11 设置颜色过滤器,可以在绘制颜色时实现不用颜色的变换效果
- 1.12 设置图像效果,使用Shader可以绘制出各种渐变效果
- 1.12 设置图像效果,使用Shader可以绘制出各种渐变效果
- 1.13 在图形下面设置阴影层,产生阴影效果
- 1.14 设置画笔样式,取值有
- 1.15 设置线冒(线的两端,又说笔触风格)样式
-
- 2 设置获取文字相关的
1. 设置获取图形绘制、路径相关的
1.1 设置画笔颜色
paint.setColor(color);
1.2 设置透明度
paint.setAlpha(alpha);
1.3 设置颜色
paint.setARGB(a, r, g, b);
1.4 设置画笔是否抗锯齿
paint.setAntiAlias(true);
1.5 设置图像是否使用抖动处理,会使得绘制出来的图片更加平滑和饱满,图像更加清晰
paint.setDither(true);
1.6 设置画笔倾斜度
paint.setStrokeMiter(f);
1.7 设置画笔宽度
paint.setStrokeWidth(width);
1.8 设置一个外来Paint画笔。
paint.set(paint)
1.9 设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果
paint.setXfermode(xfermode);
1.10 设置 MaskFilter,可以用不同的 MaskFilter 实现滤镜的效果,如滤化,立体等
paint.setMaskFilter(maskfilter);
1.11 设置颜色过滤器,可以在绘制颜色时实现不用颜色的变换效果
paint.setColorFilter(colorfilter);
1.12 设置图像效果,使用Shader可以绘制出各种渐变效果
paint.setShader(Shader shader);
1.12 设置图像效果,使用Shader可以绘制出各种渐变效果
paint.setShader(Shader shader);
1.13 在图形下面设置阴影层,产生阴影效果
/**
* radius 阴影的角度
* dx 阴影在x轴上的距离
* dy 阴影在y轴上的距离
* color 阴影的颜色
*/
paint.setShadowLayer(radius, dx, dy, color);
1.14 设置画笔样式,取值有
- Paint.Style.FILL :填充内部
- Paint.Style.STROKE :仅描边
- Paint.Style.FILL_AND_STROKE :填充内部和描边
注意STROKE、FILL_OR_STROKE与FILL模式下外轮廓的位置会扩大。
paint.setStyle(Paint.Style.FILL);
paint.setStyle(Paint.Style.STROKE);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
1.15 设置线冒(线的两端,又说笔触风格)样式
- Paint.Cap.BUTT :无线冒
- Paint.Cap.SQUARE :方形线冒
- Paint.Cap.ROUND :圆形线冒
paint.setStrokeCap(Paint.Cap.BUTT);
paint.setStrokeCap(Paint.Cap.SQUARE);
paint.setStrokeCap(Paint.Cap.ROUND);
2 设置获取文字相关的
2.1 获取字符行间距
paint.getFontSpacing();
2.2 设置和获取字符间距(API21)
paint.setLetterSpacing(letterSpacing);
paint.getLetterSpacing();
2.3 是否有下划线和设置下划线
paint.isUnderlineText();
paint.setUnderlineText(true);
2.4 获取与设置是否有文本删除线
paint.isStrikeThruText();
paint.setStrikeThruText(true);
2.5 获取与设置文字大小
paint.getTextSize();
paint.setTextSize(textSize);
注意:使用时不同分辨率处理问题
Paint.setTextSize传入的单位是px
TextView.setTextSize传入的单位是sp
2.6 获取与设置字体类型
paint.getTypeface();
paint.setTypeface(Typeface.DEFAULT);//默认字体
paint.setTypeface(Typeface.DEFAULT_BOLD);//加粗字体
paint.setTypeface(Typeface.SANS_SERIF);//sans字体
paint.setTypeface(Typeface.SERIF);//serif字体
paint.setTypeface(Typeface.MONOSPACE);//monospace字体
2.7 获取与设置文字倾斜
参数没有具体范围,官方推荐值为-0.25,
- 值为负则右倾
- 为正则左倾
- 默认值为0
paint.getTextScaleX();
paint.setTextScaleX(scaleX);
2.7 获取与设置文本对齐方式
取值为CENTER、LEFT、RIGHT,也就是文字绘制是左边对齐、右边还是居中的
paint.getTextAlign();
paint.setTextAlign(Paint.Align.LEFT);
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextAlign(Paint.Align.RIGHT);
2.8 设置亚像素
- 亚像素:就是把两个相邻的两个像素之间的距离再细分,再插入一些像素,这些通过程序加入的像素就是亚像素。在两个像素间插入的像素个数是通过程序计算出来的,一般是插入两个、三个或四个。
- 所以打开亚像素显示,是可以在增强文本显示清晰度的,但由于插入亚像素是通过程序计算而来的,所以会耗费一定的计算机性能。
paint.setSubpixelText(true);
2.9 获取文本的宽高,通过 bounds 的 Rect 拿到整型
paint.getTextBounds(String text, int start, int end, Rect bounds);
paint.getTextBounds(char[] text, int index, int count, Rect bounds);
2.10 粗略获取文本的宽度,和上面的getTextBounds比较类似,返回浮点数
paint.measureText(String text);
paint.measureText(CharSequence text, int start, int end);
paint.measureText(String text, int start, int end);
paint.measureText(char[] text, int index, int count);
2.11 精确计算文字宽度,与上面两个类似
paint.getTextWidths(String text, int start, int end, float[] widths);
paint.getTextWidths(String text, float[] widths);
paint.getTextWidths(CharSequence text, int start, int end, float[] widths);
paint.getTextWidths(char[] text, int index, int count, float[] widths);