2015-06-18 12 views
21

Ho trovato una miriade di librerie per poter utilizzare svg in Android ed evitare la creazione frustrante di risoluzioni diverse e di file in caduta per ogni risoluzione, questo diventa molto fastidioso quando l'app ha molte icone o immagini.modo più semplice per usare svg in Android?

Qualcuno può essere così gentile da dare una procedura passo passo della libreria più semplice da usare per l'utilizzo di SVG in Android, sono sicuro che questo aiuterà molti altri.

Anche io uso Android Studio e Illustrator per generare le mie icone e immagini.

+0

Possibile duplicato di [Quali sono le migliori pratiche per l'utilizzo delle icone SVG su Android?] (Http://stackoverflow.com/questions/9647770/what-are-best-practices-for-using -svg-icons-on-android) –

risposta

15

UPDATE: Please notice this answer is from 2015, and there might better and easier ways to use svg in Android at the present moment. So take this answer with a grain of salt.

Ok dopo alcune ore di ricerca ho trovato svg-android per essere abbastanza facile da usare, così sto lasciando qui le istruzioni passo passo:

  1. scaricare lib da: https://code.google.com/p/svg-android/downloads/list Ultima versione al momento della stesura di questo è: vaso svg-android-1.1.jar

  2. put in lib dir.

  3. Salvare il file SVG * in res/drawable dir (in Illustrator è semplice come premere Salva con nome e selezionare SVG)

  4. codice seguente nella vostra attività utilizzando la libreria svg:

    ImageView imageView = (ImageView) findViewById(R.id.imgView); 
    SVG svg = SVGParser.getSVGFromResource(getResources(), R.drawable.example); 
    //The following is needed because of image accelaration in some devices such as samsung 
    imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
    imageView.setImageDrawable(svg.createPictureDrawable()); 
    



È può ridurre codice standard come questo

Molto facile Ho fatto una semplice classe per contenere il codice passato e ridurre il codice standard, in questo modo:

import android.app.Activity; 
import android.view.View; 
import android.widget.ImageView; 

import com.larvalabs.svgandroid.SVG; 
import com.larvalabs.svgandroid.SVGParser; 

public class SvgImage { 

    private static ImageView imageView; 
    private Activity activity; 
    private SVG svg; 
    private int xmlLayoutId; 
    private int drawableId; 


    public SvgImage(Activity activity, int layoutId, int drawableId) { 
     imageView = (ImageView) activity.findViewById(layoutId); 
     svg = SVGParser.getSVGFromResource(activity.getResources(), drawableId); 
     //Needed because of image accelaration in some devices such as samsung 
     imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
     imageView.setImageDrawable(svg.createPictureDrawable()); 
    } 
} 

Ora posso chiamare in questo modo in attività:

SvgImage rainSVG = new SvgImage(MainActivity.this, R.id.rainImageView, R.drawable.rain); 
    SvgImage thunderSVG = new SvgImage(MainActivity.this, R.id.thunderImageView, R.drawable.thunder); 
    SvgImage oceanSVG = new SvgImage(MainActivity.this, R.id.oceanImageView, R.drawable.ocean); 
    SvgImage fireSVG = new SvgImage(MainActivity.this, R.id.fireImageView, R.drawable.fire); 
    SvgImage windSVG = new SvgImage(MainActivity.this, R.id.windImageView,R.drawable.wind); 
    SvgImage universeSVG = new SvgImage(MainActivity.this, R.id.universeImageView,R.drawable.universe); 
+3

Si dovrebbe considerare di contrassegnare la propria risposta come accettata invece della precedente –

+0

Quando provo ad aggiungere file SVG viene visualizzato un messaggio di errore, Errore: Il nome del file deve terminare con .xml o. png –

+1

Perché 'imageView'' static'? Vedo una bandiera bug rosso hugh qui. 'SvgImage rainSVG = new SvgImage (MainActivity.this, R.id.rainImageView, R.drawable.rain); SvgImage thunderSVG = new SvgImage (MainActivity.this, R.id.thunderImageView, R.drawable.thunder); ' rainSVG fa riferimento contiene thunderImageView – DSchmidt

30

Per prima cosa è necessario importare i file svg seguendo semplici passaggi.

  1. clic destro su drawable
  2. Clicca nuova
  3. Selezionare Vector Asset

Se immagine è disponibile nel computer quindi selezionare file locale svg. Quindi selezionare il percorso dell'immagine e un'opzione per modificare la dimensione dell'immagine è disponibile anche nella parte destra della finestra di dialogo, se lo si desidera. in questo modo immagine svg viene importato nel progetto Dopo di che per l'utilizzo di questa immagine utilizzare la stessa procedura di

@drawable/yourimagename 
+0

Risposta breve e utile, senza mal di testa quando si importano file svg esterni da proiettare. – CodeToLife

+0

esattamente quello che stavo cercando :) – mohnage7

+0

il pulsante 'Avanti' è sempre disabilitato. qualche idea del perché? – mrid

1

Prova il plugin SVG2VectorDrawable. Vai a Preferenze-> Plugin-> Sfoglia i plugin e installa SVG2VectorDrawable. Ottimo per convertire i file sag in vettoriali disegnabili. Una volta installato, troverai un'icona per questo nella sezione della barra degli strumenti a destra dell'icona della guida (?).

0

Piuttosto che aggiungere librerie che aumentano la dimensione del tuo apk, ti ​​suggerisco di convertire Svg in disegnabile usando http://inloop.github.io/svg2android/. e aggiungere vectorDrawables.useSupportLibrary = true in gradle,

Problemi correlati