为了在
Android中使用svg,我发现了大量的图书馆,并避免了令人沮丧的创建不同的分辨率,并为每个分辨率丢弃文件,这在应用程序有很多图标或图像时变得非常烦人.
任何人都可以像Android一样使用最简单的使用SVG的一步一步的过程,我相信这也将帮助许多其他人.
此外,我还使用Android Studio和Illustrator来生成我的图标和图像.
编辑:
解决方法
好的,经过几个小时的研究,我发现svg-android很容易使用,所以我一步一步的说明:
>下载lib从:https://code.google.com/p/svg-android/downloads/list
撰写本文时最新版本是:svg-android-1.1.jar
>将jar放在lib目录下.
>将您的* .svg文件保存在res / drawable dir中(在插画中,按Save as as save as as select svg)
>使用svg库在您的活动中编写以下内容:
ImageView imageView = (ImageView) findViewById(R.id.imgView); SVGParser 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());
您可以减少这样的样板代码
很简单,我做了一个简单的类来包含过去的代码,并减少了样板代码,像这样:
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()); } }
现在我可以在活动中这样称呼:
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);