参考学习网址:
关于Andorid加载高清大图(仿sina weibo 里面的长图效果) - CSDN博客 http://blog.csdn.net/t1623183652/article/details/50037351

GitHub网址:
GitHub - davemorrissey/subsampling-scale-image-view: Android library (AAR). Highly configurable, easily extendable deep zoom view for displaying huge images without loss of detail. Perfect for photo galleries, maps, building plans etc. https://github.com/davemorrissey/subsampling-scale-image-view

这个控件只能加载本地图片,如果你想加载网络图片,则可以获得网络图片的缓存文件再通过它加载出来就是了。

尝试用了Glide、PhotoView、ImageLoader等等方法,一般图片都能勉强加载出来,但就是高清超长图加载不出来,界面一片黑;使用LargeImageView把图片加载出来了,但很卡,ε=(´ο`*)))唉操作太不理想了。就在一筹莫展地时候,突然神奇地发现了subsampling-scale-image-view(第一次听说),马上试了一下,太棒啦,加载高清长图完全没压力。废话不多说了,直接上具体的使用步骤。

具体步骤:

这个控件有双指缩放、双击缩放的功能!!!
1.添加依赖:

compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.5.0'

2.布局:

<com.davemorrissey.labs.subscaleview.SubsamplingScaleImageViewandroid:id="@+id/subsampling_scale_image_view"android:layout_width="match_parent"android:layout_height="match_parent"/>

3.加载本地图片:

subsamplingScaleImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CUSTOM);              subsamplingScaleImageView.setMinScale(0.1F);//最小显示比例
subsamplingScaleImageView.setMaxScale( 5.0f);//最大显示比例
File file = new File(saveFilePath);
// 将图片文件给SubsamplingScaleImageView,这里注意设置ImageViewState设置初始显示比例
// ImageViewState的三个参数为:scale,center,orientation subsamplingScaleImageView.setImage(ImageSource.uri(Uri.fromFile(file)),new ImageViewState(1.0f, new PointF(0, 0), 0));

4.加载网络图片
subsampling-scale-image-view控件只能加载本地图片,但它能加载缓存里面的文件,所以通过Glide获取到缓存文件,再用它显示出来؏؏☝ᖗ乛◡乛ᖘ☝؏؏ 嫌缓存文件占存储空间,不用的时候删掉就是了呗,反正就一句话的事儿
为Glide添加依赖:

compile 'com.github.bumptech.glide:glide:3.7.0'

具体代码:
先用Glide获取到图片的硬盘缓存后,再用控件显示出来。

Glide.with(ActImage.this).load(图片网址).downloadOnly(new SimpleTarget<File>() {@Overridepublic void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) {                                                                               subsamplingScaleImageView.setImage(ImageSource.uri(resource.getAbsolutePath()),new ImageViewState(1.0f, new PointF(0, 0), 0));}});

在退出此界面时,删除Glide缓存的图片硬盘文件。

private File imageCacheFile;
imageCacheFile = resource;
//清除Glide硬盘缓存的图片文件if(imageCacheFile != null){imageCacheFile.delete();}

补充:
根据图片自身大小,计算其缩放比例,使其宽度与屏幕宽度一致;这样你在初次显示图片的时候就可以设置其与屏幕同宽了。

 /*** 计算出图片初次显示需要放大倍数* @param imagePath 图片的绝对路径*/public float getInitImageScale(String imagePath){Bitmap bitmap = BitmapFactory.decodeFile(imagePath);WindowManager wm = this.getWindowManager();int width = wm.getDefaultDisplay().getWidth();int height = wm.getDefaultDisplay().getHeight();// 拿到图片的宽和高int dw = bitmap.getWidth();int dh = bitmap.getHeight();float scale = 1.0f;//图片宽度大于屏幕,但高度小于屏幕,则缩小图片至填满屏幕宽if (dw > width && dh <= height) {scale = width * 1.0f / dw;}//图片宽度小于屏幕,但高度大于屏幕,则放大图片至填满屏幕宽if (dw <= width && dh > height) {scale = width * 1.0f / dw;}//图片高度和宽度都小于屏幕,则放大图片至填满屏幕宽if (dw < width && dh < height) {scale = width * 1.0f / dw;}//图片高度和宽度都大于屏幕,则缩小图片至填满屏幕宽if (dw > width && dh > height) {scale = width * 1.0f / dw;}return scale;}

把图片的最大放大比例设置为其填满屏幕宽度后再加2.0f;图片初次显示时从屏幕左上角开始显示,并且正好填满屏幕的宽度。

float initImageScale = getInitImageScale(saveFilePath);                      subsamplingScaleImageView.setMaxScale(initImageScale + 2.0f);//最大显示比例                       subsamplingScaleImageView.setImage(ImageSource.uri(Uri.fromFile(file)),new ImageViewState(initImageScale, new PointF(0, 0), 0));

加载超大超长图片(本地、在线)---使用第三方subsampling-scale-image-view相关推荐

  1. https访问http加载不出图片_前端解决第三方图片防盗链的办法

    作者:biaochenxuying 转发链接:https://github.com/biaochenxuying/blog/issues/31 问题 笔者网站的图片都是上传到第三方网站上的,比如 简书 ...

  2. html加载超大像素图片,html – 首先加载低分辨率背景图像,然后加载高分辨率图像...

    这是我使用的方法 CSS: #div_whatever { position: whatever; background-repeat: no-repeat; background-position: ...

  3. 小程序一次性上传多个本地图片,上拉加载照片以及图片加载延迟解决之道

    一:小程序之一次性上传多个本地相片 最近由于项目需要所以学了下小程序,也做了一些东西,随后便有了以下的一些总结了,现在说说如何使用小程序一次性上传多个本地相片. 问题描述 最近做项目的时候要实现一个上 ...

  4. android 从相册读取多张图片大小,Android优化查询加载大数量的本地相册图片

    一.概述 讲解优化查询相册图片之前,我们先来看下PM提出的需求,PM的需求很简单,就是要做一个类似微信的本地相册图片查询控件,主要包含两个两部分: 进入图片选择页面就要显示出手机中所有的照片,包括系统 ...

  5. Android_优化查询加载大数量的本地相册图片

    一.概述 讲解优化查询相册图片之前,我们先来看下PM提出的需求,PM的需求很简单,就是要做一个类似微信的本地相册图片查询控件,主要包含两个两部分: 进入图片选择页面就要显示出手机中所有的照片,包括系统 ...

  6. 前端加载超大图片(100M以上)实现秒开解决方案

    前言 前端加载超大图片时,一般可以采取以下措施实现加速: 图片压缩:将图片进行压缩可以大幅减小图片的大小,从而缩短加载时间.压缩图片时需要注意保持图片质量,以免影响图片显示效果. 图片分割:将超大图片 ...

  7. android glide加载不出图片_Glide实现共享元素无缝转场效果,只需四步!

    原文: How to Use Shared Element Transition with Glide in 4 steps 作者:Bartłomiej Osmałek 读完这篇文章, 你就会知道使用 ...

  8. jquery 当页面图片加载之后_图片的懒加载和预加载

    一.懒加载 [1.1]什么是懒加载? 懒加载也就是延迟加载,指的是在长网页中延迟加载图像,是一种很好优化网页性能的方式.当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1 ...

  9. IOS开发之异步加载网络图片并缓存本地实现瀑布流(一)

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为博主原创文章,未经博主允许不得转载. [objc] view plaincopy </pre>&l ...

最新文章

  1. Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】...
  2. delphi基本语法
  3. 前端学习(1645):前端系列实战课程之留言板功能实现
  4. pb通过对象名称调用对象_C++ 可调用对象(二)
  5. 中国首枚芯片邮票问世:搭载NFC芯片 可APP读取
  6. 腾讯疯狂扩展7000人!我居然挂在了项目这块。。。
  7. C#(asp.net)实现目录(无扩展名)重写
  8. matlab2c使用c++实现matlab函数系列教程-log10函数
  9. 织云Lite发布:详解包管理核心能力
  10. 你写的api接口代码真是_百度AI接口之JavaAPI方式调用示例代码[持续完善中]
  11. Delphi XE7 下载 安装序列号 破解
  12. 樊昌信通信原理第7版笔记和课后习题答案
  13. 微信小程序生成分享海报
  14. 2021-2004中国环境统计年鉴面板数据、环境面板数据
  15. 李迟2022年4月工作生活总结
  16. html:制作简易京东导航栏
  17. 程序员最关注的三大话题,第二个不信你不看
  18. 图像特征点、投影变换与图像拼接
  19. 量子力学奇妙之旅-从相对论下薛定谔方程到量子场论
  20. petalinux 添加编译好的应用程序

热门文章

  1. iOS:高仿微信文章悬浮球
  2. H5实现实时音频MP3上传至服务端
  3. 计算机二级ppt设置返回按钮,计算机二级考试进行时,这33条PPT备考干货,快收藏!...
  4. mysql exec_mysql 存储过程 exec
  5. 成果VR虚拟3D展厅让内容更丰富饱满
  6. 3分钟学会图新地球图源制作详细教程
  7. 现代通用计算机使用的进制,2017年最新计算机应用基础试题
  8. SMC集装阀岛在线选型软件
  9. 如何申请一个免费的域名。。在 freenom 上 并解决用谷歌账号登录不上的问题
  10. 贷前决策部署与策略调优(史上最全)