过了个年,继续把这个系列走完
从刚开始的系列,我们提出了rect、canvas、paint等坑,这里先解释一下,分别为矩形、画布、画笔等。
paint
基本用法
// 1.创建一个画笔
private Paint mPaint = new Paint();
// 2.初始化画笔
private void initPaint() {
mPaint.setColor(Color.BLACK); //设置画笔颜色
mPaint.setStyle(Paint.Style.FILL); //设置画笔模式为填充
mPaint.setStrokeWidth(10f); //设置画笔宽度为10px
}
// 3.在构造函数中初始化(XXXView为自定义的View名称)
public XXXView(Context context, AttributeSet attrs) {
super(context, attrs);
initPaint();
}
见名知义,这里给一下画笔的各种模式
画笔模式
STROKE //描边
FILL //填充
FILL_AND_STROKE //描边加填充
Paint可以使用 Shader
但不直接用 Shader 这个类,而是用它的几个子类。具体来讲有 LinearGradient RadialGradient SweepGradient BitmapShader ComposeShader 这么几个。
LinearGradient 线性渐变
LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile)
参数介绍:
x0 y0 x1 y1:渐变的两个端点的位置
color0 color1 是端点的颜色tile:端点范围之外的着色规则,类型是 TileMode。TileMode 一共有 3 个值可选: CLAMP, MIRROR 和 REPEAT。CLAMP会在端点之外延续端点处的颜色;MIRROR 是镜像模式;REPEAT 是重复模式
RadialGradient 辐射渐变
RadialGradient(float centerX, float centerY, float radius, int centerColor, int edgeColor, TileMode tileMode)
参数介绍:
centerX centerY:辐射中心的坐标
radius:辐射半径
centerColor:辐射中心的颜色
edgeColor:辐射边缘的颜色
tileMode:辐射范围之外的着色模式。
SweepGradient 扫描渐变
SweepGradient(float cx, float cy, int color0, int color1)
参数介绍:
cx cy :扫描的中心
color0:扫描的起始颜色
color1:扫描的终止颜色
BitmapShader(用 Bitmap 的像素来作为图形或文字的填充)
BitmapShader(Bitmap bitmap, Shader.TileMode tileX, Shader.TileMode tileY)
参数介绍:
bitmap:用来做模板的
Bitmap 对象
tileX:横向的 TileMode
tileY:纵向的 TileMode。
ComposeShader 混合着色器
ComposeShader(Shader shaderA, Shader shaderB, PorterDuff.Mode mode)
参数介绍:
shaderA, shaderB:两个相继使用的
Shadermode: 两个 Shader 的叠加模式,即 shaderA 和 shaderB 应该怎样共同绘制。它的类型是 PorterDuff.Mode,关于这个有必要放一张经典的图了,哈哈
画笔的setStrokeCap
Paint.setStrokeCap(cap) 可以设置点的形状,但这个方法并不是专门用来设置点的形状的,而是一个设置线条端点形状的方法。端点有圆头 (ROUND)、平头 (BUTT) 和方头 (SQUARE) 三种绘制线类似(可亲自尝试)
Paint.setStrokeJoin(Paint.Join join)可以设置拐角的形状。有三个值可以选择:MITER 尖角、 BEVEL 平角和 ROUND 圆角。默认为 MITER。
Paint.setStrokeMiter(float miter)这个方法是对于 setStrokeJoin() 的一个补充,它用于设置 MITER 型拐角的延长线的最大值
哈哈,很啰嗦的介绍了画笔的一些方法,虽然简单绘制只需要基本方法即可,但先啰嗦出来,以后肯定能用上,再详细说,本次就到这里,
下节开始结合画布,正式绘图,开启自定义控件之旅。