Android中的矢量图形

Dan*_*Lew 33 android vector-graphics

我正在开发一个显示其他人的图像数据库的应用程序.他们拥有的图像都是矢量图形,可以转换为任何格式,但是将它们保存为矢量格式是好的,因为用户可能想要放大.

问题是,是否有一种在Android中显示矢量图形的内置方法?格式无关紧要 - 我们可以转换.我们正在考虑的当前格式是PDF,但鉴于没有本机PDF支持,我必须做一些非常复杂的事情才能使其正常工作(例如,通过NDK 将poppler集成到我的应用程序中).另一种方法是将矢量图形转换为更简单的格式(JPG,GIF),但我宁愿避免这种情况.

Mat*_*all 21

看看svg-android - 它是一个相对较新的库,它只支持SVG Basic,但它是用于绘制Androidify的库.主页上有关于如何从SVG获取Drawable的示例,它们正是您正在寻找的.


Sub*_*ian 7

创建矢量绘图.


我知道这个问题很老,但我遇到了同样的要求,我很高兴得知Android 5.0现在支持矢量绘图.您可以使用<vector>标记和路径数据来创建矢量绘图,它就像API-21上的魅力一样.这是一个产生心脏形状的矢量图像的例子.

<!-- res/drawable/heart.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="256dp"
    android:width="256dp"
    android:viewportWidth="32"
    android:viewportHeight="32">

    <!-- draw a path -->
    <path android:fillColor="#8fff"
        android:pathData="M20.5,9.5
                    c-1.955,0,-3.83,1.268,-4.5,3
                    c-0.67,-1.732,-2.547,-3,-4.5,-3
                    C8.957,9.5,7,11.432,7,14
                    c0,3.53,3.793,6.257,9,11.5
                    c5.207,-5.242,9,-7.97,9,-11.5
                    C25,11.432,23.043,9.5,20.5,9.5z" />
</vector>
Run Code Online (Sandbox Code Playgroud)

到目前为止我遇到的唯一问题是,它不包含在支持库中,因此您无法在较低的API中使用它们.美妙的是,你现在甚至可以为矢量绘图制作动画.这是一个例子.

<!-- res/drawable/vectordrawable.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="64dp"
    android:width="64dp"
    android:viewportHeight="600"
    android:viewportWidth="600">
    <group
        android:name="rotationGroup"
        android:pivotX="300.0"
        android:pivotY="300.0"
        android:rotation="45.0" >
        <path
            android:name="v"
            android:fillColor="#000000"
            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
    </group>
</vector>
Run Code Online (Sandbox Code Playgroud)

了解更多关于矢量绘制动画这里.