博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】...
阅读量:5061 次
发布时间:2019-06-12

本文共 2076 字,大约阅读时间需要 6 分钟。

Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】

 

Android在加载或者处理超大巨型图片(x MB量级起步的图片)是一件非常需要小心谨慎的活儿,除了常规的OOM,其他需要处理的细节地方还很多,幸好开源社区github贡献了一套神器:SubsamplingScaleImageView(subsampling-scale-image-view),提供了一揽子完善的Android超大巨图的解决处理方案,为开发者解决处理加载超大巨型图的燃眉之急。

SubsamplingScaleImageView(subsampling-scale-image-view)其在github上的项目主页:
需要注意的是,subsampling-scale-image-view在其项目代码中又引用了github上的另外一个开源项目:RapidDecoder,RapidDecoder在github上的项目主页是:
开发者在自己的项目中使用SubsamplingScaleImageView(subsampling-scale-image-view)库的时候,还还需要再把RapidDecoder导入。简单期间,可以将RapidDecoder的链接路径 目录下全部源代码复制到SubsamplingScaleImageView(subsampling-scale-image-view)代码包里面即可。
接下来开始使用SubsamplingScaleImageView(subsampling-scale-image-view)。
以加载一个超大、超高清分辨率的中国地图china.jpg为例(像素分辨率5484 * 4066,大小计5.04MB)。
步骤:
(1) 将china.jpg放置在工程的assets目录下。
(2) 用subsampling-scale-image-view自身提供的ImageSource.asset读取该china.jpg。
(3) 然后将其作为数据源载入SubsamplingScaleImageView。
代码,测试的主Activity MainActivity.java:

  1. package zhangphil.demo;
  2.  
  3. import com.davemorrissey.labs.subscaleview.ImageSource;
  4. import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
  5.  
  6. import android.app.Activity;
  7. import android.os.Bundle;
  8.  
  9. public class MainActivity extends Activity {
  10.  
  11. private SubsamplingScaleImageView mSubsamplingScaleImageView;
  12.  
  13. @Override
  14. public void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_main);
  17.  
  18. mSubsamplingScaleImageView=(SubsamplingScaleImageView) findViewById(R.id.subsamplingScaleImageView);
  19. mSubsamplingScaleImageView.setImage(ImageSource.asset(
    "china.jpg"));
  20. }
  21. }

 

MainActivity.java需要的布局文件activity_main.xml,很简单,只有一个SubsamplingScaleImageView:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/subsamplingScaleImageView"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent" />

 

像通常一个超大巨图需要的随手指拖曳查看浏览、双击放大或缩小等常规图片浏览需要的功能,SubsamplingScaleImageView本身已经自带,开发者无需重复写代码完成。

转载于:https://www.cnblogs.com/Free-Thinker/p/9235413.html

你可能感兴趣的文章
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
MySQL服务读取参数文件my.cnf的规律研究探索
查看>>
java string(转)
查看>>
__all__有趣的属性
查看>>
写博客
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
ios封装静态库技巧两则
查看>>
Educational Codeforces Round 46 (Rated for Div. 2)
查看>>
Abstract Factory Pattern
查看>>
C# 实现Bresenham算法(vs2010)
查看>>
基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装
查看>>
list 容器 排序函数.xml
查看>>
存储开头结尾使用begin tran,rollback tran作用?
查看>>