android绘制图形总结

来源:互联网 发布:mysql pxc 架构 编辑:程序博客网 时间:2024/04/30 03:47

需要继承View,并重写onDraw(),当需要更新视图时,调用invalidate()(非UI线程调用postInvalidate())。其中涉及到的类有:Canvas,Paint,Path等。

Canvas是依附于View的画布,定义了各种绘制图形的方法,常用的有:drawBitmap()画位图,drawPath()沿着指定path画任意图形,drawCircle()画圆,drawRect()画矩形,drawRoundRect()画圆角矩形,drawOval()画椭圆,drawText()画文本,drawText()画文本,drawColor()画背景颜色,drawTextOnPath()沿着路径画文本,drawLine()画直线,drawPoint()画点,等等。
Canvas还提供了如下方法对图形进行变换:translate(),rotate(),scale()。
Canvas的drawBitmapMesh()方法用来扭曲图像,这个方法非常强大,如果用的好,可以开发出如”水波荡漾“”红旗飘飘“等效果。
Paint是画笔类,主要用来设置绘制风格,常用的api有:setARGB(),setAlpha(),setTextAlign()设置是否抗锯齿,setColor(),setStyle(),setStrokeWidth(),setTextSize(),setPathEffect()设置绘制路径时的路径效果,setTextAlign()设置文字对齐方式,setShader()设置笔画的填充效果,setShadowLayer()设置阴影,等等。
Path类代表任意多条直线连接成的任意图形,常用api有:moveTo()定义图形的第一个顶点,lineTo()定义图形的多个顶点,close()回到起始点形成封闭线,addRect(),setPathEffect()设置绘制效果。PathEffect类来定义绘制效果,该类有如下子类:
CornerPathEffect:将Path的各个连接线段之间的夹角用一种更平滑的方式连接。
DashPathEffect:将Path的线段虚线化。
DiscretePathEffect:打散Path的线段,使得在原来路径的基础上发生打散效果。
PathDashPathEffect:使用Path图形来填充当前的路径。
ComposePathEffect:组合效果。
SumPathEffect:叠加效果。
Matrix是矩阵工具类,用来控制图形,组件的变换。提供了如下方法:reset(),setSkew(),setScale(),setRotate(),setTranslate()。Canvas类画图形的方法里面就会使用到该类,如:drawBitmap(Bitmap bitmap, Matrix matrix, Paint p)。

Shader类可用来指定图形的渲染效果(通过paint.setShader()),它提供了如下子类:
BitmapShader:位图平铺
LinearGradient:线性渐变
RadialGradient:圆形渐变
SweepGradient:角度渐变
ComposeShader:组合渲染效果
3 1