所以我试图理解pathData语法,以便通过xml创建一些矢量drawable ...
我可以创建任何方形,但我不能理解如何创建圆形(如椭圆形或圆形)。
任何人都可以提供一些圆形的例子:
解释每个pathData属性的作用?
谢谢!
答案 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>