转载请说明出处!
作者:kqw攻城狮
出处:个人站 | CSDN
Android自定义View绘图基础
View的测量
控件的测量可以说是固定写法,原生的View只支持EXACTLY的测量模式,我们自定义的控件可以重写onMeasure方法
|
|
onMeasure方法给我们返回的widthMeasureSpec和heightMeasureSpec,我们并不能直接拿过来使用,需要使用MeasureSpec类进行解析,来获取测量后的具体值。
首先需要获取测量模式
|
|
根据上面的意思,可以封装我们的getMeasuredSize方法
|
|
现在我们自定义的View就支持自定义的大小了,包括match_parent、wrap_content、具体值。
View的绘制
画笔属性
创建画笔
| 方法 | 描述 | 举例 |
|---|---|---|
| public void setAntiAlias(boolean aa) | 设置画笔锯齿效果 | true 无锯齿效果 |
| public void setColor(@ColorInt int color) | 设置画笔颜色 | |
| public void setARGB(int a, int r, int g, int b) | 设置画笔的A、R、G、B值 | |
| public void setAlpha(int a) | 设置画笔的Alpha值 | |
| public void setTextSize(float textSize) | 设置字体的尺寸 | |
| public void setStyle(Style style) | 设置画笔的风格(空心或实心) | paint.setStyle(Paint.Style.STROKE);// 空心 paint.setStyle(Paint.Style.FILL); // 实心 |
| public void setStrokeWidth(float width) | 设置空心边框的宽度 |
Shader
BitmapShader, ComposeShader, LinearGradient, RadialGradient, SweepGradient
点
|
|
|
|
直线
绘制一条直线
绘制多条直线
矩形
|
|
|
|
圆角矩形
|
|
|
|
圆
|
|
|
|
扇形
|
|
|
|
弧形
扇形通过调整属性,可以实现弧形的效果,首先画笔设置成空心
|
|
设置画扇形的useCenter参数为false
|
|
椭圆
|
|
|
|
文字
|
|
|
|
在指定位置显示每个字符
|
|
|
|
绘制路径
可以自定义画出想要的任意图形
五角星
|
|
|
|
空心
|
|
图形裁剪
以上面的实心五角星为例,以五角星的中心为圆心,裁剪出一个半径为100的圆形
|
|
|
|
| Region.Op | 描述 | 样式 |
|---|---|---|
| INTERSECT | 裁剪内部交集 | |
| DIFFERENCE | 外部 |