自定义View基础(三)View的绘图篇
来源:互联网 发布:淘宝发布宝贝没有品牌 编辑:程序博客网 时间:2024/06/05 05:10
把自己整理的发出来,具体Demo就不放了
1.Paint类:画笔类
void setAlpha(int a) 设置alpha不透明度,范围为0~255void setAntiAlias(boolean aa) //是否抗锯齿,边缘更清晰一些,锯齿痕迹不会那么明显。但会消耗较大资源,绘制图形速度会变慢。
void setColor(int color) //设置颜色
void setStrokeWidth(float width) //设置描边画笔宽度
void setDither(boolean dither);//设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰
void setStyle(Paint.Style style); //Style.FILL: 填充
STROKE:描边
FILL_OR_STROKE: 填充且描边
void setShadowLayer(float radius, float dx, float dy, int shadowColor) 设置阴影
radius : 表示阴影的倾斜度
dx : 水平位移
dy : 垂直位移
shadowColor : 阴影颜色
//处理文本
void setFakeBoldText(boolean fakeBoldText) //设置伪粗体文本
void setLinearText(boolean linearText) //设置线性文本
void setTextAlign(Paint.Align align) //设置文本对齐
void setTextScaleX(float scaleX) //设置文本缩放倍数,1.0f为原始
void setTextSize(float textSize) //设置字体大小
void setUnderlineText(boolean underlineText) //设置下划线
//得到TextView的矩形区域
mBound = new Rect();
mPaint.getTextBounds(mTitleText, 0, mTitleText.length(), mBound);
mBound.width();//矩形区域的宽
mBound.height()//矩形区域的高
2.Canvas类:画板类,相当于纸,无限大,没有边界
//设置背景颜色
canvas.drawColor(Color.BLUE);
canvas.drawRGB(255, 255, 0);
drawLines(@Size(min=4,multiple=2) float[] pts, int offset, int count, Paint paint)
drawLines(@Size(min=4,multiple=2) @NonNull float[] pts, @NonNull Paint paint)
参数:
pts : 是点的集合且大小最小为4而且是2的倍数。表示每2个点连接形成一条直线,pts 的组织方式为{x1,y1,x2,y2….}
offset : 集合中跳过的数值个数,注意不是点的个数!一个点是两个数值
count : 参与绘制的数值的个数,指pts[]里数值个数,而不是点的个数,因为一个点是两个数值
void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) //画线,参数一起始点的x轴位置,
参数二起始点的y轴位置,
参数三终点的x轴水平位置,
参数四y轴垂直位置,
参数五为Paint画刷对象。
void drawPoint(float x, float y, Paint paint) //画点,参数一二表示一个点,第三个参数为Paint对象。
void drawPoints(@Size(multiple=2) @NonNull float[] pts, @NonNull Paint paint)
void drawRect(RectF rect, Paint paint) //绘制区域,RectF坐标系是浮点型;Rect坐标系是整形。
void drawRoundRect(@NonNull RectF rect, float rx, float ry, @NonNull Paint paint)//rx生成圆角的椭圆X轴半径
ry生成圆角的椭圆Y轴的半径
void drawCircle(float cx, float cy, float radius, @NonNull Paint paint)//画圆,圆心坐标,半径
void drawOval(@NonNull RectF oval, @NonNull Paint paint)//椭圆
void drawArc(@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter,@NonNull Paint paint)
//圆弧
oval : 生成椭圆的矩形
startAngle : 弧开始的角度 (X轴正方向为0度,顺时针弧度增大)
sweepAngle : 绘制多少弧度 (注意不是结束弧度)
useCenter : 是否有弧的两边 true有两边 false无两边
void drawPath(Path path, Paint paint) //绘制一个路径,参数一为Path路径对象
void drawBitmap(Bitmap bitmap, Matrix m, Paint paint);
void drawText(String text, float x, float y, Paint paint)//渲染文本,x为左上角坐标的x坐标,y为右下角坐标的y坐标
void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint)//在路径上绘制文本,
相对于上面第二个参数是Path路径对象
3.Path类详解:
moveTo 移动起点 移动下一次操作的起点位置
lineTo 连接直线 连接上一个点到当前点之间的直线
setLastPoint 设置终点 重置最后一个点的位置
close 闭合路劲 从最后一个点连接最初的一个点,形成一个闭合区域
rMoveTo,rlineTo,rQuadTo,rCubicTo rXxx方法 不带r的方法是基于原点坐标系(偏移量),带r的基于当前绘制点坐标(偏移量)
addRect 添加矩形 添加矩形到当前Path
addRoundRect 添加圆角矩形 添加圆角矩形到当前Path
addOval 添加椭圆 添加椭圆到当前Path
addCircle 添加圆 添加圆到当前Path
addPah 添加路劲 添加路劲到当前Path
addArc 添加圆弧 添加圆弧到当前Path
arcTo 圆弧 绘制圆弧,注意和addArc的区别
mPath.arcTo(ovalRectF, startAngle, sweepAngle) , ovalRectF为椭圆的矩形,startAngle 为开始角度,sweepAngle 为结束角度。顺时针旋转
isEmpty 是否为空 判定Path是否为空
isRect 是否为矩形 判定Path是否是一个矩形
set 替换路劲 用新的路劲替换当前路劲的所有内容
reset,rewind 重置路劲 清除Path中的内容(reset相当于new Path , rewind 会保留Path的数据结构)
offset 偏移路劲 对当前的路劲进行偏移
public void offset(float dx, float dy)
public void offset(float dx, float dy, Path dst)
如果dx为正数则向右平移,反之向左平移;如果dy为正则向下平移,反之向上平移
op 布尔操作 对两个Path进行布尔运算(交集,并集)等操作
setFillType 填充模式 设置Path的填充模式
setFillType(Path.FillType ft)
FillType.WINDING 取path所有所在区域 默认值
FillType.EVEN_ODD 取path所在并不相交区域
FillType.INVERSE_WINDING 取path所有未占区域
FillType.INVERSE_EVEN_ODD 取path未占或相交区域
getFillType 填充模式 获取Path的填充
incReserve 提示方法 提示Path还有多少个点等待加入
computeBounds 计算边界 计算Path的路劲
quadTo 贝塞尔曲线 二次贝塞尔曲线的方法
public void quadTo(float x1, float y1, float x2, float y2)
(x1,y1) 为控制点,(x2,y2)为结束点。
cubicTo 贝塞尔曲线 三次贝塞尔曲线的方法
public void cubicTo(float x1, float y1, float x2, float y2, float x3, float y3)
(x1,y1) 为控制点,(x2,y2)为控制点,(x3,y3) 为结束点。
0 0
- 自定义View基础(三)View的绘图篇
- Android 自定义View绘图篇之基础
- Android自定义View绘图基础
- 自定义View之绘图篇(三):文字(Text)
- 自定义view—绘图基础Canvas+Paint
- 自定义View-绘图基础之Path
- 自定义View的基础
- 自定义View之绘图篇(一):基础图形的绘制
- 自定义 View 基础篇
- 自定义view-绘图时钟
- 自定义View,绘图
- Android 自定义View基础-View的测量
- Android 自定义View基础-View的绘制
- 自定义View基础(二)View的滑动
- Android的绘图机制学习---自定义View
- Android 自定义View绘图篇之进阶
- Android绘图系列(三)——自定义View绘制仪表盘
- Android自定义View基础篇(三)之SwitchButton开关
- Redis在window下的安装配置
- 四、安装cuDNN,caffe和openCV
- 字符串 开灯问题
- 前端技术学习之选择器(十)
- 向上
- 自定义View基础(三)View的绘图篇
- spring相关技术整理
- Erlang(7):顺序程序的错误处理
- app外包开发注意事项大全『最新』
- 图片库优化
- ubuntu 14.04中elasticsearch 2.3 + nginx
- Git 提交模板 Commit Template
- 打砖块Demo
- Android ScrollView和OnTouch冲突解决(最新)