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,欢迎大家进行交流.
效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。