所以我试图理解 pathData 语法,以便通过 xml 创建一些矢量可绘制对象...
我可以创建任何方形,但我就是不明白如何创建圆形(例如椭圆形或圆形)。
谁能举出一些圆形的例子:
- 画圈。
- 椭圆形。
- Empty Circle/Oval(放在其他形状上会导致这部分透明)。
解释每个 pathData 属性的作用?
谢谢!
最佳答案
路径注释(anroid-vectordrawable 中使用的 SVG 符号):路径具有紧凑的编码。例如,M(表示“移动到”)在初始数字 x 和 y 坐标之前,而 L(线到)在应该画线的点之前。其他命令字母(C、S、Q、T 和 A)位于前面用于绘制各种贝塞尔曲线和椭圆曲线的数据。 Q 是二次贝塞尔曲线,Z 用来封闭一条路径。在所有情况下,绝对坐标都跟在大写字母命令之后,相对坐标在等效的小写字母之后使用。
SVG path notation .
命令:A(绝对)a(相对)
名称 :椭圆弧
参数 :(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+
描述:从当前点画一条椭圆弧到
(x,y)。大小和
椭圆的方向由两个半径定义
(rx, ry) 和一个
x-axis-rotation,表示如何
椭圆作为一个整体相对于当前旋转
坐标系。中心 (cx,
cy) 的椭圆计算
自动满足由强加的约束
其他参数。 large-arc-flag 和
sweep-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/