专栏首页Android干货自定义控件详解(二):Path类 相关用法

自定义控件详解(二):Path类 相关用法

Path:路径

绘制路径:void drawPath (Path path, Paint paint)

Path 可以绘制的路径

一、直线路径

1、基本方法

      void moveTo (float startX, float startY)
        直线的开始点;即将直线路径的绘制点定在(startX,startY)的位置;
      void lineTo (float endX, float endY)
        直线的结束点,又是下一次绘制直线路径的开始点;
      void close ()
        如果连续画了几条直线,但没有形成闭环,调用Close()会将路径首尾点连接起来,形成闭环;

    ①、不形成闭环 

    ------------>             

   ②、形成闭环 ,可以看到首尾两个坐标之间闭合了一条直线

 ------------>  

二、矩形路径

       1、基本方法 

    void addRect (float left, float top, float right, float bottom, Path.Direction dir)
    void addRect (RectF rect, Path.Direction dir)

    RectF rect = new RectF(float left, float top, float right, float bottom);

   可见两个方法类似。  

     这里有一个 Path.Direction dir 参数, 翻译一下就是:路径绘制的方向

   有两个系统值:

          (1)、Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的矩形路径;           (2)、Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的矩形路径;

注意点:RectF 和 Rect 类 的区别

      1、都表示矩形

      2、精度不一样,Rect是int ,RectF是float

      3、矩形路径用到的是RectF类,注意不要使用Rect类 

                ------------>       

三、圆形路径

       1、基本方法   

    void addCircle (float x, float y, float radius, Path.Direction dir)

   就一个方法,参数很显然: x 圆心X轴坐标 ,y 圆心Y轴坐标 ,radius 圆的半径 ,dir 绘制圆形路径的方向

            ------------>       

四、椭圆路径

       1、基本方法

void addOval (RectF oval, Path.Direction dir)

  可以发现和绘制矩形路径类似 用到了RectF类

  注意四个参数的意义 

                    ------------>      

五、弧形路径

       1、基本方法

void addArc (RectF oval, float startAngle, float sweepAngle)

  两个参数的意义:

          ①、float startAngle:开始的角度,X轴正方向为0度           ②、float sweepAngel:持续的度数;

    画一个X轴正方形开始的(0°),持续270°的 弧形

                         ------------>       

六、圆角矩形路径

       1、基本方法 

    void addRoundRect (RectF rect, float[] radii, Path.Direction dir)
    void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)

  这里有两个方法:

    ①、 void addRoundRect (RectF rect, float[] radii, Path.Direction dir)

       可以看到多了一个float[] radii 参数,这个参数控制的是圆形矩形四个角的圆形程度,每一个角又由一个X轴半径和一个Y轴半径控制

       所以这个数组参数必须要有8个值 ,这个方法能控制生成的圆角矩形各个角的圆形程度都不一样

       从左上角开始 顺时针 每两个值控制一个角

       下面例子看到看到 从左上角瞬时间开始角的程度分别为 5px,10px,15px,20px

             ------------>   

    ②、void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)

      这个方法更简单,只要控制一次x,y轴半径,让四个角统一的设置一次就行

     如下图,每一个角的程度都一致

             ------------>   

------------------------------------------------------------------------------------------------------------------------------

以上是路径的各种绘制方法,接下来讲一下 路径绘制基本都要用到的参数  

1、Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的矩形路径;

2、Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的矩形路径;

很简单可以看出这个参数其实就是控制我们绘制一个图形是 顺时针绘制的还是逆时针绘制的

现在我们给绘制的时候加上文本,就可以轻松看出绘制的顺序了

     ----------->        

参考代码

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅谈GridLayout(网格布局)

    听着music睡
  • 安卓开发_复选按钮控件(CheckBox)的简单使用

    听着music睡
  • Android项目实战(二十):浅谈ListView悬浮头部展现效果

    听着music睡
  • Android网络框架OKhttp3学习笔记

    OKhttp3是一个非常强大的Android网络框架,它是由Square公司开发并开源的,很大Android开发者都会使用到,所以我也要来学学。

    夜雨飘零
  • 让你的布局滚动起来—ScrollView

    通过两天的”实战“,今天我们稍微放松一下脚步,让大家喘口气歇一会儿,我们今天为大家带来的控件,解决了太多在项目中遇到的适配问题,如果你已经碰到了这种问题,就紧跟...

    下码看花
  • 这个ssr 开发骨架有点帅

    前段时间一直在研究react ssr 技术,也很想自己写一个 ssr开发骨架,有了自己的骨架后就不需要在用 ejs 模板了,直接用 jsx 就可以了,技术栈也就...

    zz_jesse
  • ROS_Kinetic_13 ROS数据录制与回放

    官网教程:http://wiki.ros.org/cn/ROS/Tutorials/Recording%20and%20playing%20back%20dat...

    zhangrelay
  • 「Android 自定义 View」—— AreaSelectLayout

    前几天写了一个小工具,其中一个设置项需要屏幕区域范围坐标参数,由于通过观察直接填写坐标信息不太现实,于是就有了通过直接拖拽屏幕去取这个参数的需求,又因为需要在任...

    SkyRiN
  • 北漂你后悔了吗?“失败”的北漂十年经历,真的尽力了...

    在我离开北京的时候,我还依稀记得,十年前我对朋友说过的那句话:我一定要留在北京,因为那里有梦想。

    纯洁的微笑
  • Step by step to install WordPress on CentOS 7

    MudOnTire

扫码关注云+社区

领取腾讯云代金券