所以我试图理解pathData语法以便通过xml创建一些矢量可绘制对象...

我可以创建任何正方形,但是我不明白如何创建圆形(例如椭圆形或圆形)。

谁能举一些圆形的例子:

  • 圈子。
  • 椭圆形。
  • 空圆圈/椭圆形(将其放置在另一个形状上将使该零件透明)。

  • 解释每个pathData属性的作用?

    谢谢!

    最佳答案

    关于路径的说明(anroid-vectordrawable中使用的SVG表示法):路径具有紧凑的编码。例如, M (用于“移至”)在初始数字x和y坐标之前,而 L (行至)在应该画线的点之前。其他命令字母( C S Q T A )位于用于绘制各种Bézier和椭圆曲线的数据之前。 Q 是二次贝塞尔曲线, Z 用于封闭路径。在所有情况下,绝对坐标都遵循大写字母命令,并且相对坐标在等效的小写字母之后使用。
    SVG path notation
    命令: (绝对)(相对)
    名称:椭圆弧
    参数:(rx ry x轴旋转大弧标志扫角标志x y)+
    说明:从当前点绘制一个椭圆弧到
    ( x )。大小和
    椭圆的方向由两个半径定义
    ( rx ry )和一个
    x轴旋转,指示如何
    椭圆整体相对于当前旋转
    坐标系。中心( cx
    椭圆的 cy )
    自动满足
    其他参数。 大弧标志
    扫描标志有助于自动
    计算并帮助确定如何绘制圆弧。

    circle.xml文件夹中使用此(res/drawable):

    <?xml version="1.0" encoding="utf-8"?>
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="200dp"
        android:height="200dp"
        android:viewportHeight="64"
        android:viewportWidth="64">
    
        <path
            android:fillColor="#ff0000"
            android:pathData="M22,32
            A10,10 0 1,1 42,32
            A10,10 0 1,1 22,32 Z" />
    </vector>
    
    Parameters :(rx, ry x-axis-rotation large-arc-flag, sweep-flag x,  y )
    
                (10, 10       0               1,            1     42, 32 )
                (10, 10       0               1,            1     22, 32 )
    

    注意:可以消除多余的空格和逗号等分隔符。
    两个弧线围成一个圆。
    圆形是椭圆形的一种特殊情况,android:fillColor =“@ color/transparent”。

    10-08 12:02