全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

开源库地址:https://github.com/japgolly/svg-android 在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  # Android把svg图片转为jpg保存到相册图库  # android异步加载图片并缓存到本地实现方法  # Android中Glide加载库的图片缓存配置究极指南  # Android加载大分辨率图片到手机内存中的实例方法  # Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案  # Android实现加载广告图片和倒计时的开屏布局  # Android中自定义加载样式图片的具体实现  # Android 异步加载图片分析总结  # Android中使用二级缓存、异步加载批量加载图片完整案例  # Android关于Glide的使用(高斯模糊、加载监听、圆角图片)  # 加载  # 开源  # 我用  # 的是  # 我就  # 我要  # 就不  # 没办法  # 较多  # 有几个  # 可以直接  # 大了  # 欢迎大家  # 想办法  # 想用  # 需要注意  # 做多  # 大家多多  # 进行交流  # 这行 


相关文章: 建站主机数据库如何配置才能提升网站性能?  如何实现建站之星域名转发设置?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  网站制作公司排行榜,四大门户网站排名?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  建站之星ASP如何实现CMS高效搭建与安全管理?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何快速查询网址的建站时间与历史轨迹?  长沙企业网站制作哪家好,长沙水业集团官方网站?  建站之星代理如何优化在线客服效率?  如何高效配置IIS服务器搭建网站?  建站VPS选购需注意哪些关键参数?  大同网页,大同瑞慈医院官网?  如何通过主机屋免费建站教程十分钟搭建网站?  如何在七牛云存储上搭建网站并设置自定义域名?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  建站之星价格显示格式升级,你的预算足够吗?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何在阿里云部署织梦网站?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  定制建站方案优化指南:企业官网开发与建站费用解析  建站之星安装需要哪些步骤及注意事项?  建站之星客服服务时间及联系方式如何?  PHP 500报错的快速解决方法  如何快速搭建支持数据库操作的智能建站平台?  网站代码制作软件有哪些,如何生成自己网站的代码?  制作网站的基本流程,设计网站的软件是什么?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  山东网站制作公司有哪些,山东大源集团官网?  香港网站服务器数量如何影响SEO优化效果?  javascript基本数据类型及类型检测常用方法小结  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何撰写建站申请书?关键要点有哪些?  C#如何序列化对象为XML XmlSerializer用法  高性价比服务器租赁——企业级配置与24小时运维服务  如何快速使用云服务器搭建个人网站?  如何制作一个表白网站视频,关于勇敢表白的小标题?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  微信小程序 input输入框控件详解及实例(多种示例)  定制建站如何定义?其核心优势是什么?  中山网站制作网页,中山新生登记系统登记流程?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  如何在橙子建站中快速调整背景颜色?  Java解压缩zip - 解压缩多个文件或文件夹实例  高防服务器如何保障网站安全无虞? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。