Android加载html中svg格式图片进行显示
发布时间 - 2026-01-11 01:13:56 点击率:次最近做的一个项目是把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的使用(高斯模糊、加载监听、圆角图片)
# 加载
# 开源
# 我用
# 的是
# 我就
# 我要
# 就不
# 没办法
# 较多
# 有几个
# 可以直接
# 大了
# 欢迎大家
# 想办法
# 想用
# 需要注意
# 做多
# 大家多多
# 进行交流
# 这行
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
nginx修改上传文件大小限制的方法
🚀拖拽式CMS建站能否实现高效与个性化并存?
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
焦点电影公司作品,电影焦点结局是什么?
javascript基本数据类型及类型检测常用方法小结
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Laravel怎么使用artisan命令缓存配置和视图
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何用已有域名快速搭建网站?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
linux top下的 minerd 木马清除方法
如何在搬瓦工VPS快速搭建网站?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
黑客如何利用漏洞与弱口令入侵网站服务器?
Bootstrap整体框架之CSS12栅格系统
公司门户网站制作流程,华为官网怎么做?
简单实现jsp分页
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
如何在万网开始建站?分步指南解析
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
如何快速上传自定义模板至建站之星?
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel如何实现API速率限制?(Rate Limiting教程)
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
免费网站制作appp,免费制作app哪个平台好?
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
如何用免费手机建站系统零基础打造专业网站?
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
如何选择PHP开源工具快速搭建网站?
中国移动官方网站首页入口 中国移动官网网页登录
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
JS中对数组元素进行增删改移的方法总结
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
济南网站建设制作公司,室内设计网站一般都有哪些功能?

