android能用svg格式,Android加载html中svg格式图片进行显示
最近做的一个项目是把assets目录中的html显示出来,但是因为html里面有一些工程图片,虽然我用ViewPager和PhotoView,进行显示放大了,但是因为工程图片的线条较多还是比较模糊.所以后来就想用svg图片来进行显示,至于svg是什么,我这里就不做多的说明,可以去网上搜一搜看看.因为svg和png jpg是不同的,没办法用glide(我图片加载框架用的是glide)进行加载,所以我就只能另想办法了,最后找到一个开源库,解决了我的问题,下面我也是用开源库做的,但是有几个坑需要注意:
接下来我贴下我的代码,主要就是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 images;
private Canvas canvas = new Canvas();
public ViewPagerAdapter(Context context, ArrayList 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能用svg格式,Android加载html中svg格式图片进行显示相关推荐
- Android使用RecyclerView实现上拉加载更多,下拉刷新,分组显示
项目地址:点击打开链接(https://github.com/MrGaoGang/luckly_recyclerview) 使用RecyclerView封装headerview,footerView, ...
- 利用WebView加载HTML代码时解决图片正常显示
WebView 提供了一个loadDataWithBaseURL(String baseUrl,String data,String mineType,String encoding,String h ...
- Glide如何加载项目中的图片资源
Glide如何加载项目中的资源图片(即res下的图片资源) 1.在res下新建目录mipmap,把图片资源放入其中 如图: 2.只需加一行代码即可,给定一个Int型的的资源id,如下 int reso ...
- Android插件化开发之动态加载三个关键问题详解
本文摘选自任玉刚著<Android开发艺术探索>,介绍了Android插件化技术的原理和三个关键问题,并给出了作者自己发起的开源插件化框架. 动态加载技术(也叫插件化技术)在技术驱动型的公 ...
- Android LruCache和DiskLruCache相结合打造图片加载框架(仿微信图片选择,照片墙)
LrcCache和DiskLruCache相结合打造图片加载框架 转载请标明出处:http://blog.csdn.net/luoshishou/article/details/51299169 源码 ...
- [Android]朝花夕拾之使用DexClassLoader动态加载广点通jar包
前言 众所周知,优秀源码的阅读与理解是最能提升自身功力的途径,如果想要成为一名优秀的Android工程师,那么Android中优秀三方库源码的分析和理解则是必备技能.就拿比较热门的图片加载框架Glid ...
- Android开源框架集合分享-图像加载
关于网络加载已经写完了,今天来给大家分享一下关于图像加载的知识,在开发中除了请求数据怎么显示之外,剩下的 最大的需求应该就在图像的显示上了,一开始的话都是直接加载,等到写完之后发现内存溢出,然后开始优 ...
- Android中WebView加载sdcard中的html时提示:ERR_FILE_NOT_FOUND和ERR_ACCESS_DENIED
场景 Android中WebView加载sdcard中的html显示: Android中WebView加载sdcard中的html显示_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在实 ...
- Android 插件化原理解析——插件加载机制
上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务:通过Hook AMS和拦截ActivityThread中H类对 ...
最新文章
- Spring 官方发起Spring Authorization Server 项目
- [Notes] Bash Shell特性
- 创建和运行Java项目
- debug pricing calculation rfc call
- 【每日一题】8月28日题目精讲 编号
- 2020年日历电子版(打印版)_“温故知新”——2020年《故宫日历》(青少版)正式发布...
- 流批一体机器学习算法平台
- python取列表中位数_Python如何获取列表(List)的中位数
- 通过Spannable对象设置textview的样式
- 吴裕雄 python 机器学习——数据预处理过滤式特征选取SelectPercentile模型
- android -- 蓝牙 bluetooth (五)接电话与听音乐
- Magento网店自定义模板初探(1)——文件夹结构
- linux设计论文题目,计算机linux本科毕业论文题目
- PTA-哥尼斯堡的“七桥问题” (20 分)
- 什么是噪声,白噪声,加性噪声,乘性噪声
- 6-3 jmu-python-函数-找钱 (10分)
- 苹果七绕过基带激活2020_【快讯:苹果135亿的基带订单,高通疑有诈直接拒绝了;网传索尼移动考虑退出东南亚手机市场;黑客成功获取iPhone XS 权限】...
- 算法通识课发刊词:人机互动时代,懂点算法才能赢
- win系统进入mysql
- JSP二手书交易平台设计与实现
热门文章
- 创建MySQL数据库的副本_MySQL创建数据库(CREATE DATABASE语句)
- linux 主机名修改日志,Linux:修改主机名【Centos7】
- mysql数据库常见问题_初学者必读 MySQL数据库常见问题汇总
- Java 并发编程之 Atomic 类
- Pycharm / IDEA 局部搜索功能,调试时搜索变量值,或是搜索文件名等局部搜索方法
- pandas标记一列为时间序列
- linux iptables_linux 开启独立iptables日志
- Java读 写文本_java读文件写文件的方法
- js加密代码的分析[转]
- Codeforces.700E.Cool Slogans(后缀自动机 线段树合并 DP)