如何在Android中使用xml绘制复杂图表
我在其他一些网站上也看到了类似的问题 我知道使用xml绘制形状,如下面的代码如何在Android中使用xml绘制复杂图表,android,xml,android-vectordrawable,Android,Xml,Android Vectordrawable,我在其他一些网站上也看到了类似的问题 我知道使用xml绘制形状,如下面的代码 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <gradient android:startColor="#FFFF0000" android:endColor="#80FF
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
<gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF"
android:angle="270"/>
</shape>
但是,我在看教程时看到了一段代码,他们使用了xml来绘制航班 我以为它是一个png文件,但后来我看到它是一个XML文件。下面是代码
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M10.18,9"/>
<path
android:fillColor="#FF000000"
android:pathData="M21,16v-2l-8,-5V3.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S10,2.67 10,3.5V9l-8,5v2l8,-2.5V19l-2,1.5V22l3.5,-1 3.5,1v-1.5L13,19v-5.5l8,2.5z"/>
</vector>
我只是想知道pathData及其内容是什么意思 你能解释一下吗? 我的下一个疑问是,我怎么能这样编码 我们是否需要手动编码(通过指定每个像素位置) 经过一些计算 或 有没有什么技巧可以通过png图像来绘制形状。(网上有吗 转换器,我们上传一个png文件,它会给我们XML代码 或任何其他方法) 问题的标题正确吗?我不知道那是什么方法。所以我简单地把如何画…。如果我指定了任何错误,请纠正我
提前感谢(:这是android文档,其中包含有关您的问题的详细信息以及与此相关的一些额外内容
但有一件事要记住,目前API级别21或更高版本支持
vector
。以下是android文档,其中包含有关您的问题的详细信息以及一些与此相关的额外信息
但有一点要记住,当前API级别21或更高版本支持
vector
。您正在查看的XML文件是一个VectorDrawable。这是Androids版本的矢量图形文件格式,与流行的SVG文件格式非常相似
目前,有两种主要的方法可以创建VectorDrawable。如果您了解了它们的工作原理,您可以手工编写代码,但最常见的方法是转换SVG文件(既有SVG文件,也可以自己绘制新的SVG文件)
制作SVG
如果您想绘制SVG,可以使用很多工具,从昂贵到免费。例如:
M21,16v-2l-8,-5V3.5c0…
表示:
移动到第21,16点(M21,16)
向上画一条长度为2(v-2)的垂直线
在5处和左侧8处画一条直线对角线(l-8,-5)
以此类推。每个字母开始一种新的命令类型
从png转换
我从来没有试过将png转换成矢量,所以我说不出它有多好。如果你想试试,谷歌“将png转换成svg”一旦有了svg,您将再次转换为上述Androids VectorDrawable格式。您正在查看的XML文件是VectorDrawable。这是Androids版本的矢量图形文件格式,与流行的svg文件格式非常相似 目前,有两种主要的方法可以创建VectorDrawable。如果您了解了它们的工作原理,您可以手工编写代码,但最常见的方法是转换SVG文件(既有SVG文件,也可以自己绘制新的SVG文件) 制作SVG 如果您想绘制SVG,可以使用很多工具,从昂贵到免费。例如:
M21,16v-2l-8,-5V3.5c0…
表示:
移动到第21,16点(M21,16)
向上画一条长度为2(v-2)的垂直线
在5处和左侧8处画一条直线对角线(l-8,-5)
以此类推。每个字母开始一种新的命令类型
从png转换
我从来没有尝试过将png转换为矢量,所以我不能说它工作得有多好。如果你想试试,谷歌“将png转换为svg”,一旦你有了svg,你就会再次转换为上述Androids VectorDrawable格式