Android自定义-Canvas

       此篇为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的方法

  1. drawRect();画出一个矩形,一般有两种构造,第一种是传一个Rect(RectF)加一个Paint,另一种是(左,上,右,下,Paint),这里的左上右下都是距离坐标原点的距离,也就是View的起始点。其实第一种Rect+Paint内部也是调用的左上右下的方法。

  2. drawArc()这个方法是画一个扇形或者弧形,第四个参数为True画扇,false画弧形。根据drawRect()就可以知道这个方法的参数意义

    Android自定义-Canvas_第1张图片
    矩形和圆弧.png

    矩形左上角的坐标就是(200,200),右下角的坐标就是(400,400),
    canvas.drawArc(rect2,90,90,true,mPaint);,第一个是区域,第二个是开始角度,这里指的是6点钟方法的那根线,也就是说起点是从三点钟开始的顺时针走了90°,这就是开始的位置,然后第二个90就是顺时针走了的角度,这里也写的90 所以出了一个1/4的圆形。

  3. drawCircle();画圆drawCircle(200,200,100,mPaint);(200,200)就是圆心坐标,第三100为半径。

  4. drawText();画文字,这里可以通过写完之后旋转,实现字体倾斜的效果。

  5. 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();//回到最初的地方
    
Android自定义-Canvas_第2张图片
圆矩形三角.png

如上面图,矩形,三角形,圆形的图样就画出来了。

  1. rotate 旋转 ,scale 缩放,translate平移。这三个没什么多的参数捣鼓捣鼓就出来了,实际运用比如垂直的简单的seekBar,想偷懒就继承seekBar 然后rotate,translate。
    再稍微改一下就能出现效果,比集成View 画Rect简单很多。

还有一些drawLine这种就不介绍了后面补充新的。

你可能感兴趣的:(Android自定义-Canvas)