安卓XML|了解 pathData 语法

标签 android xml vector android-vectordrawable

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

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

谁能举出一些圆形的例子:

  1. 画圈。
  2. 椭圆形。
  3. Empty Circle/Oval(放在其他形状上会导致这部分透明)。

解释每个 pathData 属性的作用?

谢谢!

最佳答案

路径注释(anroid-vectordrawable 中使用的 SVG 符号):路径具有紧凑的编码。例如,M(表示“移动到”)在初始数字 x 和 y 坐标之前,而 L(线到)在应该画线的点之前。其他命令字母(CSQTA)位于前面用于绘制各种贝塞尔曲线和椭圆曲线的数据。 Q 是二次贝塞尔曲线,Z 用来封闭一条路径。在所有情况下,绝对坐标都跟在大写字母命令之后,相对坐标在等效的小写字母之后使用。 SVG path notation .
命令:A(绝对)a(相对)
名称 :椭圆弧
参数 :(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+
描述:从当前点画一条椭圆弧到 (xy)。大小和 椭圆的方向由两个半径定义 (rx, ry) 和一个 x-axis-rotation,表示如何 椭圆作为一个整体相对于当前旋转 坐标系。中心 (cx, cy) 的椭圆计算 自动满足由强加的约束 其他参数。 large-arc-flagsweep-flag 有助于自动 计算并帮助确定如何绘制圆弧。


在你的res/drawable文件夹中使用这个(circle.xml):

<?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"。

关于安卓XML|了解 pathData 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39423853/

相关文章:

Android:如何验证包是正版的

c++ - 我如何制作指向动态分配对象的指针 vector ?

c++ - 删除C++ vector 中的字段

c++ - vector resize 抛出 bad_alloc 是否会使原始数据无效?

java - 如何在使用 ViewFlipper 的 showNext() 后更改 ListFragment 的 ListView?

android - 我可以制作一个 Android 按钮模板吗?

xml - SQL 服务器 2008 : Modify xml replacing an attribute value with a value of a column

java - 如何将 Java 中的 If 结构转换为带有字符串或枚举值的 Switch Case?

xml - perl解析xml文件后,得到特殊字符

android - 当 ListView 行项目中有隐藏 View 时, fragment 不尊重匹配父高度