转载请说明出处!
作者: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 | 外部 |