最近做的一个项目是把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小时内与您取得联系。