此篇为Canvas的介绍同时也当字典使用。
首先介绍两个类:Rect ,RectF 大的区别就是Rect里面的参数为Int类型,RectF里面是float类型。RectF提供了一些额外的方法,常用的又判断某块区域在不在RectF中,contain(RectF r),以下代码可以判断出rect2在rect1里面,同时也有contain(x,y),判断这个点在不在这个区间。常用的就是滑动的时候判断自己的滑动区域在不在制定的空间中。
RectF rect1 = new RectF(20,200,400,400);
RectF rect2 = new RectF(30,210,380,380);
if(rectf.contains((rect2))){}
下面开始写Canvas的方法
-
drawRect();画出一个矩形,一般有两种构造,第一种是传一个Rect(RectF)加一个Paint,另一种是(左,上,右,下,Paint),这里的左上右下都是距离坐标原点的距离,也就是View的起始点。其实第一种Rect+Paint内部也是调用的左上右下的方法。
-
drawArc()这个方法是画一个扇形或者弧形,第四个参数为True画扇,false画弧形。根据drawRect()就可以知道这个方法的参数意义
矩形和圆弧.png
矩形左上角的坐标就是(200,200),右下角的坐标就是(400,400),
canvas.drawArc(rect2,90,90,true,mPaint);,第一个是区域,第二个是开始角度,这里指的是6点钟方法的那根线,也就是说起点是从三点钟开始的顺时针走了90°,这就是开始的位置,然后第二个90就是顺时针走了的角度,这里也写的90 所以出了一个1/4的圆形。 -
drawCircle();画圆drawCircle(200,200,100,mPaint);(200,200)就是圆心坐标,第三100为半径。
-
drawText();画文字,这里可以通过写完之后旋转,实现字体倾斜的效果。
-
drawPath()这个画线段,
Path path = new Path(); path.lineTo(100, 100);//从(0,0)画线到(100,100); //Path.move(100,100)就是直接从(100,100)出发 path.lineTo(400, 600);//从(100,100)画到(400,600) path.lineTo(500,300); path.close();//回到最初的地方

如上面图,矩形,三角形,圆形的图样就画出来了。
- rotate 旋转 ,scale 缩放,translate平移。这三个没什么多的参数捣鼓捣鼓就出来了,实际运用比如垂直的简单的seekBar,想偷懒就继承seekBar 然后rotate,translate。
再稍微改一下就能出现效果,比集成View 画Rect简单很多。
还有一些drawLine这种就不介绍了后面补充新的。
网友评论