用过sina微博客户端的同学都知道,它里面有一个长图功能。
需求是可以显示比如10000X10000(px)的图片。
如果你直接用bitmap加载图片文件(或者是从inputstream获取到,然后转化为bitmap),在用imageview.setBitmap(bitmap),
恭喜你会成功看到图片太大不能够加载出来的logcat信息.。
解决问题的思路:参看弘扬大神的http://blog.csdn.net/lmj623565791/article/details/49300989 文章,当然要自己写一个带手势的库(原谅我自己太菜了,没有写出来)
然后在网上找到了3个开源库:

  • https://github.com/davemorrissey/subsampling-scale-image-view
  • https://github.com/diegocarloslima/ByakuGallery
  • https://github.com/LuckyJayce/LargeImage

    3个库我分别尝试了一下:

  • LargeImage的长图功能里面没有放缩功能,并且大图加载的放缩的缩放点有问题,长图加缩放的功能没有(里面的源码自己没有研究懂,这个貌似是接近sina里面的效果,但是有一些bug o(╯□╰)o,如果作者有时间可以修复就好了)
  • ByakuGallery设置最小的缩放值没有提供想关的函数,自己尝试加一个但是加上自己缩放的时候就出问题了,之后就没研究了
  • 最终决定选用subsampling-scale-image-view
  • 然后自己之前图片加载用的是glide,要配合使用subsampling-scale-image-view。自己google了一番终于找到了解决办法http://www.28im.com/android/a82597.html
    glide有下载图片的功能,那就只是需要保存下图片然后在操作就行了。

打开你们的AS:
在自己的app module里面的build.gradle里面加入如下依赖:

dependencies {compile 'com.android.support:appcompat-v7:23.+'compile 'com.github.bumptech.glide:glide:3.6.1'compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.4.1'
}
  final SubsamplingScaleImageView imageView = (SubsamplingScaleImageView) findViewById(R.id.imageView);imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CUSTOM);imageView.setMinScale(1.0F);final String testUrl = "http://image.zcool.com.cn/2013/53/18/m_1385635534691.jpg";final File downDir = Environment.getExternalStorageDirectory();//使用Glide下载图片,保存到本地Glide.with(this).load(testUrl).asBitmap().into(new SimpleTarget<Bitmap>() {@Overridepublic void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {File file = new File(downDir, "/Glide/m_1385635534691.jpg");if (!file.exists()) {try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}FileOutputStream fout = null;try {//保存图片fout = new FileOutputStream(file);resource.compress(Bitmap.CompressFormat.JPEG, 100, fout);// 将保存的地址给SubsamplingScaleImageView,这里注意设置ImageViewStateimageView.setImage(ImageSource.uri(file.getAbsolutePath()), new ImageViewState(0.5F, new PointF(0, 0), 0));} catch (FileNotFoundException e) {e.printStackTrace();} finally {try {if (fout != null) fout.close();} catch (IOException e) {e.printStackTrace();}}}});

不要忘记在Androidmanifest里面的加入联网权限和读写权限。。。
上面用了setMinimumScaleType,setMinScale先设置最小的缩放类型,再设置缩放的最小值;当然还有一点比较重要的是要设置它的ImageViewState 要不然你会发现默认并不是从图片的左上角开始缩放的。
也许很多人都会时候没图你说个JB啊,那还是要先看下效果图赛。下面是测试用的图片地址http://image.zcool.com.cn/2013/53/18/m_1385635534691.jpg
本来想传gif的但是gif 6M 传不上去,那就看截图吧:


最后如果你们知道更好的解决,请告诉我下,请告诉我下,请告诉我下!重要的事情说3遍。。。

关于Andorid加载高清大图(仿sina weibo 里面的长图效果)相关推荐

  1. 浅谈android中加载高清大图及图片压缩方式(二)

    这一讲就是本系列的第二篇,一起来聊下关于android中加载高清大图的问题,我们都知道如果我们直接加载原图的话,一个是非常慢,需要等待一定时间,如果没有在一定的时间内给用户响应的话,将会极大影响用户的 ...

  2. ios 加载大量图片崩溃_加载高清大图崩溃问题

    SDWebImage加载高清大图崩溃问题: 经验证没测试出来,在网上查找根源应该是在iOS7上有问题,特此记录一下 第一种:老版本SDWebImage_v4.2.0 更改源码 这里面对图片的处理是直接 ...

  3. android 高清图片,Android加载高清大图

    前两天在面试当中被问到有没有做过加载高清大图,当时确实没有做过,听面试官提到可以动态加载图片的显示区域.回来后在网上找到了一篇鸿洋大神的博文悔啊-_-!为什么早点没有看到.废话不多说代码如下: 一.B ...

  4. 一招解决Android 加载高清大图

    本文转自:http://blog.csdn.net/lmj623565791/article/details/49300989 最近花时间详细拜读了郭神博客的图片加载系列,感觉收获不少.正好想将自己之 ...

  5. 加载大量图片内存暴增导致闪退 Terminated due to memory issue(内存暴增SDWebImage加载高清大图崩溃)

    上传图片一定要压缩,一定要压缩,一定要压缩.(目前手机拍摄的图片一张几M,上传后不压缩,如果几十张一块加载展示时内存画面有点美!如果是后台上传除了需要高清以外的图也需要压缩处理) 下载大量图片时一定要 ...

  6. ios 图片加载内存尺寸_iOS加载超清大图内存暴涨问题解决

    加载超清大图是会引起内存爆表的问题,最近一直困扰着我. SDWebImage在加载大图时做的不是很好,加载大图内存爆表.YYWebImage会好一点,但还是不行. 当不要求图片质量的情况下,最好是在上 ...

  7. 【Python爬虫实战】爬取IU高清大图

    文章目录 一.准备工作 二.具体分析 三.具体步骤 (1)将HTML文本提取出来 (2)第一步解析获得各个图集网址 (3)第二步解析获得图集中每张图片所在页面网址 (4)第三步解析获得每张图片网址 ( ...

  8. Android_性能优化之ViewPager加载成百上千高清大图oom解决方案

    欢迎加入技术谈论群:714476794 一.背景 最近做项目需要用到选择图片上传,类似于微信.微博那样的图片选择器,ContentResolver读取本地图片资源并用RecyclerView+Glid ...

  9. html 图片点击查看大图_【神游千年,大美敦煌】北魏-260窟【高清大图】

    [神游千年,大美敦煌]北魏-260窟[高清大图] --------------------------------------------------------------------------- ...

最新文章

  1. 现在不坚持,以后都会放弃
  2. poll函数实现多路复用
  3. 解决mapgis比例尺不正确问题
  4. Windows Server 2008密码重设盘
  5. 多表查询,初识pymysql模块
  6. 关于SpringBoot和Thymeleaf模板中遇到的问题
  7. Python使用TCP通讯例子
  8. 若依框架入门(前后端分离版本)
  9. 采集摄像头RGB565数据并转为bmp图像
  10. 内网穿透干货教程,1分钟极速穿透内网端口
  11. 实验一 简单静态网页设计
  12. 安卓开发 之小白养成-Android环境搭建 二
  13. [Minitab]如何製作柏拉圖(Pareto chart)?
  14. a到z的ascii码值是多少_c语言 ASCLL码中 A~Z和a~z是多少
  15. 学习C语言基本思路与参考书籍
  16. 一个去除pdf回车符的网页
  17. 基于 Marvell 88Q2112 车载以太网 物理层收发器
  18. 记一次坎坷的算法需求实现:轻量级人体姿态估计模型的修炼之路(附MoveNet复现经验)...
  19. 阿里云轻量应用服务器环境搭建-设置通过密钥登录服务器
  20. C语言中的字符变量和字符常量

热门文章

  1. 如何设置快递送达时短信提醒
  2. [附源码]java毕业设计流浪宠物免费领养系统
  3. 那些一秒搞定微软公司Excel的神操作(上)!
  4. 【LaTex】常用特殊符号对应表
  5. 【Tool工具】LICEcap 推荐 GIf录制工作- 如何简单录制一个gif(Mac Window都可)
  6. Google Cloud 发起“Data Cloud Alliance”新联盟
  7. user-scalable=no 控制手机版浏览器网页分辨率
  8. ThinkPHP3.0主入口配置,注册、登录案例
  9. C/C++实现strcpy和strcat两个功能
  10. Unity 接入百度AI - 通用物体和场景识别