本文来自于笔者(我)研读扔无线的hencoder系列文章做的一些总结,为了加深自己的记忆,本文总结了android的Paint类的一系列方法,有什么错误的地方欢迎各路大神指出
简介
Paint类, 翻译为油漆,燃料的意思,android中一般称之为画笔,来看一下它的介绍
直译过来意思是 paint类掌握着如果去绘制图形,文字,图片的风格和颜色信息
Paint类的方法大致可以分为以下4类
1,颜色
2,效果
3,drawText
4,初始化
让我们来一一过一下这些方法
NO.1 颜色
有三层对颜色的处理方法,分别为
1.1设置基本的颜色
1.1.1 setColor(int color)
很简单,给画笔设置颜色
1.1.2 setARGB(int color)
同上,就是设置颜色的方式不同,它的参数用的是更直接的三原色与透明度的值
1.1.3 setShader(Shader shader)
Shader翻译过来为着色器,也是用给Paint设置颜色的,不过它与setColor()/setARGB()不同,setColor()/setARGB()是直接设置颜色,而setShader()是设置一套着色方案,我们一般设置shader是使用的它的几个子类LinearGradient,
1.1.3.1 LinearGradient 线性渐变
来看下LinearGradient的构造方法
public LinearGradient(float x0, float y0, float x1, float y1,@ColorIntint color0, @ColorIntint color1,@NonNull TileMode tile)
x0 y0 x1 y1 分别代表渐变的起点和终点
color0 color1 代表从渐变的颜色 例(red,green)就代表从红色向绿色渐变
TileMode tile 辐射范围之外的着色模式, 它有三个可选值, CLAMP,MIRROR,REPAT, CLAMP代表会在终点之外延续终点的颜色,MIRROR代表镜像模式,REPAT代表的是重复模式,分别看一下他们的效果
1.1.3.2 RadialGradient 辐射渐变
来看一下它的构造方法
public RadialGradient(float centerX, float centerY, float radius,@ColorIntint centerColor, @ColorIntint edgeColor, @NonNull TileMode tileMode)
float centerX, float centerY 代表辐射的中心点
float radius 辐射的半径
ColorIntint centerColor, @ColorIntint edgeColor 从centerColor渐变到edgeColor颜色
TileMode tileMode 辐射范围之外的着色模式。 同上
1.1.3.3 SweepGradient 扫描渐变
来看一下它的构造方法
public SweepGradient(float cx, float cy, @ColorIntint color0, @ColorIntint color1)
float cx, float cy,代表的是中心点的坐标
@ColorIntint color0, @ColorIntint color1 渐变的颜色,从color0向color1渐变
1.1.3.4 BitmapShader
使用bitmap对象来着色