欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-11 20:42:04
最近做的一个项目是把assets目录中的html显示出来,但是因为html里面有一些工程图片,虽然我用viewpager和photoview,进行显示放大了,但是因为工程图...

最近做的一个项目是把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,欢迎大家进行交流.

效果:

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

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

上一篇:

下一篇: