最近做的一个项目是把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格式图片进行显示相关推荐

  1. Android使用RecyclerView实现上拉加载更多,下拉刷新,分组显示

    项目地址:点击打开链接(https://github.com/MrGaoGang/luckly_recyclerview) 使用RecyclerView封装headerview,footerView, ...

  2. 利用WebView加载HTML代码时解决图片正常显示

    WebView 提供了一个loadDataWithBaseURL(String baseUrl,String data,String mineType,String encoding,String h ...

  3. Glide如何加载项目中的图片资源

    Glide如何加载项目中的资源图片(即res下的图片资源) 1.在res下新建目录mipmap,把图片资源放入其中 如图: 2.只需加一行代码即可,给定一个Int型的的资源id,如下 int reso ...

  4. Android插件化开发之动态加载三个关键问题详解

    本文摘选自任玉刚著<Android开发艺术探索>,介绍了Android插件化技术的原理和三个关键问题,并给出了作者自己发起的开源插件化框架. 动态加载技术(也叫插件化技术)在技术驱动型的公 ...

  5. Android LruCache和DiskLruCache相结合打造图片加载框架(仿微信图片选择,照片墙)

    LrcCache和DiskLruCache相结合打造图片加载框架 转载请标明出处:http://blog.csdn.net/luoshishou/article/details/51299169 源码 ...

  6. [Android]朝花夕拾之使用DexClassLoader动态加载广点通jar包

    前言 众所周知,优秀源码的阅读与理解是最能提升自身功力的途径,如果想要成为一名优秀的Android工程师,那么Android中优秀三方库源码的分析和理解则是必备技能.就拿比较热门的图片加载框架Glid ...

  7. Android开源框架集合分享-图像加载

    关于网络加载已经写完了,今天来给大家分享一下关于图像加载的知识,在开发中除了请求数据怎么显示之外,剩下的 最大的需求应该就在图像的显示上了,一开始的话都是直接加载,等到写完之后发现内存溢出,然后开始优 ...

  8. Android中WebView加载sdcard中的html时提示:ERR_FILE_NOT_FOUND和ERR_ACCESS_DENIED

    场景 Android中WebView加载sdcard中的html显示: Android中WebView加载sdcard中的html显示_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在实 ...

  9. Android 插件化原理解析——插件加载机制

    上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务:通过Hook AMS和拦截ActivityThread中H类对 ...

最新文章

  1. Spring 官方发起Spring Authorization Server 项目
  2. [Notes] Bash Shell特性
  3. 创建和运行Java项目
  4. debug pricing calculation rfc call
  5. 【每日一题】8月28日题目精讲 编号
  6. 2020年日历电子版(打印版)_“温故知新”——2020年《故宫日历》(青少版)正式发布...
  7. 流批一体机器学习算法平台
  8. python取列表中位数_Python如何获取列表(List)的中位数
  9. 通过Spannable对象设置textview的样式
  10. 吴裕雄 python 机器学习——数据预处理过滤式特征选取SelectPercentile模型
  11. android -- 蓝牙 bluetooth (五)接电话与听音乐
  12. Magento网店自定义模板初探(1)——文件夹结构
  13. linux设计论文题目,计算机linux本科毕业论文题目
  14. PTA-哥尼斯堡的“七桥问题” (20 分)
  15. 什么是噪声,白噪声,加性噪声,乘性噪声
  16. 6-3 jmu-python-函数-找钱 (10分)
  17. 苹果七绕过基带激活2020_【快讯:苹果135亿的基带订单,高通疑有诈直接拒绝了;网传索尼移动考虑退出东南亚手机市场;黑客成功获取iPhone XS 权限】...
  18. 算法通识课发刊词:人机互动时代,懂点算法才能赢
  19. win系统进入mysql
  20. JSP二手书交易平台设计与实现

热门文章

  1. 创建MySQL数据库的副本_MySQL创建数据库(CREATE DATABASE语句)
  2. linux 主机名修改日志,Linux:修改主机名【Centos7】
  3. mysql数据库常见问题_初学者必读 MySQL数据库常见问题汇总
  4. Java 并发编程之 Atomic 类
  5. Pycharm / IDEA 局部搜索功能,调试时搜索变量值,或是搜索文件名等局部搜索方法
  6. pandas标记一列为时间序列
  7. linux iptables_linux 开启独立iptables日志
  8. Java读 写文本_java读文件写文件的方法
  9. js加密代码的分析[转]
  10. Codeforces.700E.Cool Slogans(后缀自动机 线段树合并 DP)