Glide中有显示svg的例子,链接如下 sample/svg
默认svg显示出来是比较小的,我们需要修改SvgDecoder.java文件,让svg的大小和ImageView一致
public Resource decode(@NonNull InputStream source, int width, int height,
@NonNull Options options)
throws IOException {
try {
Log.e("liang","width:" + width + ",height=" + height);
SVG svg = SVG.getFromInputStream(source);
svg.setDocumentWidth(width); //需要添加部分
svg.setDocumentHeight(height); //需要添加部分
return new SimpleResource<>(svg);
} catch (SVGParseException ex) {
throw new IOException("Cannot load SVG from stream", ex);
}
}
显示svg的ImageView设置android:scaleType="fitXY",其他类型显示都有问题
例子中是显示本地文件和网络文件,我们还可以直接显示内容
private void loadRes() {//显示本地文件
Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getPackageName() + "/"
+ R.raw.a);
requestBuilder.load(uri).into(imageViewRes);
}
private void loadNet() {//显示网络文件
Uri uri = Uri.parse("http://www.clker.com/cliparts/u/Z/2/b/a/6/android-toy-h.svg");
requestBuilder.load(uri).into(imageViewNet);
}
private void loadContent() {//显示svg内容
requestBuilder.load(getSvgString().getBytes()).into(imageViewRes);
}
private String getSvgString(){
return "\n" +
"
\\\\ce{N2 + 3H2 <=>[高温、加压][催化剂] 2NH3}\n" +"\n" +
"\n" +
"\n" +
"\n" +
"\n" +
"\n" +
"\n" +
"\n" +
"\n" +
" \n" +
" \n" +
" \n" +
" \n" +
"\n" +
" \n" +
" \n" +
"\n" +
"\n" +
" \n" +
"\n" +
"\n" +
"催\n" +
"\n" +
"化\n" +
"\n" +
"\n" +
"剂\n" +
"\n" +
"\n" +
"\n" +
"\n" +
"\n" +
"高\n" +
"\n" +
"温\n" +
"\n" +
"\n" +
"、\n" +
"\n" +
"\n" +
"加\n" +
"\n" +
"\n" +
"压\n" +
"\n" +
"\n" +
"\n" +
"\n" +
" \n" +
"\n" +
" \n" +
" \n" +
" \n" +
"\n" +
"\n" +
"\n";
}