2010-10-25 4 views
32

Я работаю над приложением, которое отображает чужую базу данных изображений. Изображения, которые у них есть, представляют собой векторную графику и могут быть преобразованы в любой формат, однако сохранение их в векторном формате является хорошим, потому что пользователи, вероятно, захотят увеличить масштаб изображения.Векторная графика в Android

Вопрос в том, есть ли встроенный способ отображения векторной графики в Android? Формат не имеет значения - мы можем конвертировать. Текущий формат, который мы рассматриваем, является PDF, но, учитывая, что нет встроенной поддержки PDF, мне пришлось бы сделать что-то довольно сложное, чтобы заставить его работать (например, интегрируя poppler в мое приложение через NDK). Альтернативой является просто преобразовать векторную графику в более простой формат (JPG, GIF), но я бы предпочел избежать этого.

+0

Если вы конвертируете в JPG/GIF, разве вы не теряете возможности вектора? – user432209

+1

Это точно проблема и почему я хочу этого избежать. –

ответ

20

Отъезд svg-android - это относительно новая библиотека, и она поддерживает только SVG Basic, но это библиотека, используемая для рисования Androidify. На домашней странице есть примеры того, как получить Drawable из SVG, который будет представлять собой то, что вы ищете.

4

TinyLive SVG обеспечивает просмотрщик SVG для Android. Я не пробовал, поэтому я понятия не имею, хорошо это или нет.

Reading this bug request, кажется, что SVG может быть включен в браузере - и, предположительно WebView тоже - в Gingerbread. Но так как это возможная функция в будущем выпуске, это, вероятно, сейчас не очень помогает вам.

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> 

Единственная проблема, которую я столкнулся до сих пор является то, что она не входит в поддержке LIBS, и поэтому вы не можете использовать их в более низком 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 lib вместе с SVG to VectorDrawable Converter.

BetterVectorDrawable - это реализация VectorDrawable для Android 4.0+ с настраиваемым поведением на Android 5.0+.

SVG to VectorDrawable Converter - пакетный конвертер изображений SVG в векторные файлы ресурсов XML VectorDrawable. Онлайн-версия - here.

Ссылки указывают на чтение, которые предоставляют достаточную информацию о том, как использовать lib и конвертер.

0

Бесстыдная самозарядная вилка, но, возможно, вас заинтересует ribbon-vg? Это базовая, чистая Java и быстрая; опираясь на передовые методы, чтобы освободить процессор в процессе рендеринга.

Смежные вопросы