2017-08-21 5 views
0

Je veux afficher un fichier .svg dans une imageview ou un webview. Je ne sais pas lequel est le meilleur à cet effet, j'aimerais avoir quelques opinions à ce sujet. Gardez à l'esprit que je n'ai pas le fichier à la compilation, donc je ne peux pas utiliser la méthode VectorDrawable API 21 avec Android Studio, bien que je puisse utiliser la classe si cela peut aider. D'abord j'ai besoin de rechercher s'il n'y a pas de .svg stocké dans le système de fichiers (stockage d'applications privées), si je ne trouve pas, je dois télécharger et enregistrer sur le système de fichiers. Je vais utiliser OkHTTP pour télécharger depuis le web et enregistrer le fichier.Charger SVG à partir du fichier dans Android

J'ai déjà plané sur ce projet si cette aide sur l'affichage d'un .svg je voudrais des suggestions puisque je n'ai jamais travaillé avec .svg using glide.

Pour ce genre de problème devrais-je utiliser de vieilles bibliothèques comme svg-android? Je ne sais pas s'ils sont plus fiables.

Répondre

0

Vous pouvez utiliser Glide pour les images svg. Créer un requestBuilder:

GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder = Glide.with(this) 
       .using(Glide.buildStreamModelLoader(Uri.class, this), InputStream.class) 
       .from(Uri.class) 
       .as(SVG.class) 
       .transcode(new SvgDrawableTranscoder(), PictureDrawable.class) 
       .sourceEncoder(new StreamEncoder()) 
       .cacheDecoder(new FileToStreamDecoder<>(new SvgDecoder())) 
       .decoder(new SvgDecoder()) 
       .listener(new SvgSoftwareLayerSetter<Uri>()); 

Et puis: requestBuilder.diskCacheStrategy(DiskCacheStrategy.NONE).load(Uri.parse(svgUrl)).into(imageView);

Voir this exemple.

Créer svgUrl comme ceci:

String fileName = "name.jpg"; 
    String path = Environment.getExternalStorageDirectory() + "/" + fileName; 

    File file = new File(path); 
    Uri svgUrl = Uri.fromFile(file); 
+0

Merci, je peux changer la couleur de teinte et de l'arrière-plan .svg? J'ai glissé 4.0.0 dans mon projet, avez-vous une idée de la façon dont je peux migrer ce code vers la nouvelle version? – Exprove

+0

Pour la teinte, essayez ceci dans 'ImageView':' android: tint = "@ color/yourColor" ' –

+0

N'est-ce pas la dernière version? –