当前位置: 移动技术网 > 移动技术>移动开发>Android > Android加载html中svg格式图片进行显示

Android加载html中svg格式图片进行显示

2019年07月24日  | 移动技术网移动技术  | 我要评论

最近做的一个项目是把assets目录中的html显示出来,但是因为html里面有一些工程图片,虽然我用viewpager和photoview,进行显示放大了,但是因为工程图片的线条较多还是比较模糊.所以后来就想用svg图片来进行显示,至于svg是什么,我这里就不做多的说明,可以去网上搜一搜看看.因为svg和png jpg是不同的,没办法用glide(我图片加载框架用的是glide)进行加载,所以我就只能另想办法了,最后找到一个开源库,解决了我的问题,下面我也是用开源库做的,但是有几个坑需要注意:

开源库地址:在android studio上可以直接去关联下载

接下来我贴下我的代码,主要就是viewpager中的代码:

import android.content.context;
import android.graphics.canvas;
import android.graphics.drawable.picturedrawable;
import android.support.v4.view.pageradapter;
import android.support.v4.view.viewpager;
import android.view.view;
import android.view.viewgroup;

import com.bumptech.glide.glide;
import com.larvalabs.svgandroid.svg;
import com.larvalabs.svgandroid.svgbuilder;

import java.io.ioexception;
import java.util.arraylist;

import uk.co.senab.photoview.photoview;


class viewpageradapter extends pageradapter {

 private context context;
 private arraylist<string> images;
 private canvas canvas = new canvas();

 public viewpageradapter(context context, arraylist<string> images) {
 this.context = context;
 this.images = images;
 }

 @override
 public int getcount() {
 return images.size();
 }

 @override
 public boolean isviewfromobject(view view, object object) {
 return view == object;
 }

 @override
 public object instantiateitem(viewgroup container, int position) {
 view view = view.inflate(context, r.layout.view_pager_item, null);
 photoview photoview = (photoview) view.findviewbyid(r.id.photoview);
 //注意 一定要加这行代码,不然会加载不出来
 photoview.setlayertype(view.layer_type_software, null);
 //拿到图片的url
 string url = images.get(position);
 //因为我要显示所有图片进行浏览 所以我用后缀名进行区分
 if (url.endswith(".svg")) {

  try {
  //获取assets目录下的svg图片的相对路径
  string replaceurl = url.replace("file:///android_asset/", "");
  svg svg = new svgbuilder().readfromasset(context.getassets(), replaceurl).build();

  canvas.drawpicture(svg.getpicture());
  //github上的svg.createdrawable()没有了,现在只有这个方法
  picturedrawable drawable = svg.getdrawable();
  drawable.draw(canvas);
  photoview.setimagedrawable(drawable);

  } catch (ioexception e) {
  e.printstacktrace();
  }
 } else {
  //用glide加载图片
  glide.with(context).load(url).into(photoview);
 }
 container.addview(view, viewpager.layoutparams.match_parent, viewpager.layoutparams.match_parent);
 return view;
 }

 @override
 public void destroyitem(viewgroup container, int position, object object) {
 container.removeview((view) object);
 }
}

因为也是刚接触svg,欢迎大家进行交流.

效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网