2010-10-25 141 views
32

我正在研究顯示其他人的圖像數據庫的應用程序。他們擁有的圖像都是矢量圖形,可以轉換爲任何格式,但將它們保持爲矢量格式非常合適,因爲用戶可能需要仔細放大。Android中的矢量圖形

問題是,有沒有一種內置的方式來顯示Android中的矢量圖形?格式不重要 - 我們可以轉換。目前我們正在考慮的格式是PDF,但考慮到沒有原生PDF支持,我必須做一些非常複雜的工作才能使它工作(例如,通過NDK將poppler集成到我的應用程序中)。另一種方法是將矢量圖形轉換爲更簡單的格式(JPG,GIF),但我寧願避免這種情況。

+0

如果您轉換爲JPG/GIF,不要失去矢量功能嗎? – user432209 2010-10-25 16:24:57

+1

這正是問題所在,也是我爲什麼要避免這個問題。 – 2010-10-26 14:25:42

回答

20

檢出svg-android - 這是一個相對較新的庫,它只支持SVG Basic,但它是用於繪製Androidify的庫。在主頁上有一些例子來說明如何從SVG獲取Drawable,這正是您要找的東西。

4

TinyLive SVG爲Android提供了一個SVG查看器。我還沒有嘗試過,所以我不知道它是否有好處。

Reading this bug request似乎SVG 可能在瀏覽器中啓用 - 所以大概WebView太 - 薑餅。但是,由於這是未來版本中的一個可能的功能,現在對您來說可能沒有多大幫助。

7

Creating Vector Drawables.


我知道這個問題是舊的,但我過這同要求來了,我很高興地得知,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> 

我面臨迄今爲止唯一的問題是,它不包含在支持庫,所以你不能使用它們較低的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> 

瞭解更多關於矢量繪製動畫here

3

請看BetterVectorDrawable庫以及SVG to VectorDrawable Converter

BetterVectorDrawable是Android 4.0+的VectorDrawable實現,在Android 5.0+上具有可配置的回退行爲。

SVG to VectorDrawable轉換器是將SVG圖像批量轉換爲Android VectorDrawable XML資源文件的轉換器。在線版本是here

鏈接指向自述文件,它提供了有關如何使用lib和轉換器的足夠信息。

0

一個無恥的自我插件,但也許你會對ribbon-vg感興趣?它是基本的,純Java和快速的;依靠先進的技術在渲染過程中減輕CPU的負擔。