Android XML |了解pathData语法

时间:2016-09-10 07:44:26

标签: android xml vector android-vectordrawable

所以我试图理解pathData语法,以便通过xml创建一些矢量drawable ...

我可以创建任何方形,但我不能理解如何创建圆形(如椭圆形或圆形)。

任何人都可以提供一些圆形的例子:

  1. 圈。
  2. 椭圆。
  3. 空圆/椭圆(将其放在另一个形状上会导致此部分透明)。
  4. 解释每个pathData属性的作用?

    谢谢!

2 个答案:

答案 0 :(得分:3)

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


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 )

注意:可以消除多余的空白区域和逗号分隔符。
两个弧形成一个圆圈 Circle是椭圆形的特例,android:fillColor =“@ color / transparent”。

答案 1 :(得分:-4)

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="108dp"
    android:width="108dp"
    android:viewportHeight="108"
    android:viewportWidth="108">

    <!--right half circle -->
    <path
        android:fillColor="#E1261D"
        android:pathData="M54,0
        A54,54 0 1,1 54,108Z" />

    <!--left half circle -->
    <path
        android:fillColor="#E1261D"
        android:pathData="M54,108
        A54,54 0 1,1 54,0Z" />
</vector>

否则

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="108dp"
    android:height="108dp"
    android:viewportWidth="108"
    android:viewportHeight="108">


    <path
        android:fillColor="#E1261D"
        android:pathData="M54,0
        A54,54 0 1,1 53.99999,0Z" />


</vector>