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


Android在加载或者处理超大巨型图片(x MB量级起步的图片)是一件非常需要小心谨慎的活儿,除了常规的OOM,其他需要处理的细节地方还很多,幸好开源社区github贡献了一套神器:SubsamplingScaleImageView(subsampling-scale-image-view),提供了一揽子完善的Android超大巨图的解决处理方案,为开发者解决处理加载超大巨型图的燃眉之急。
SubsamplingScaleImageView(subsampling-scale-image-view)其在github上的项目主页:
https://github.com/davemorrissey/subsampling-scale-image-view
需要注意的是,subsampling-scale-image-view在其项目代码中又引用了github上的另外一个开源项目:RapidDecoder,RapidDecoder在github上的项目主页是:
https://github.com/suckgamony/RapidDecoder
开发者在自己的项目中使用SubsamplingScaleImageView(subsampling-scale-image-view)库的时候,还还需要再把RapidDecoder导入。简单期间,可以将RapidDecoder的链接路径https://github.com/suckgamony/RapidDecoder/tree/master/library/src/main/java 目录下全部源代码复制到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:

package zhangphil.demo;import com.davemorrissey.labs.subscaleview.ImageSource;import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity {privateSubsamplingScaleImageView mSubsamplingScaleImageView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mSubsamplingScaleImageView=(SubsamplingScaleImageView) findViewById(R.id.subsamplingScaleImageView);mSubsamplingScaleImageView.setImage(ImageSource.asset("china.jpg"));}}

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

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

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


顺道附录我曾经写过的其他关于Android图片处理/加载的部分文章:
【1】《Android手势缩放图片以及图片黏贴在手指随手势移动》链接地址:http://blog.csdn.net/zhangphil/article/details/43965701
【2】《Android大图片之缩略图,以及对原图按照指定宽高裁剪成缩略图》链接地址:http://blog.csdn.net/zhangphil/article/details/47857495
【3】《Android读取assets目录下文件数据内容》链接地址:http://blog.csdn.net/zhangphil/article/details/48247541
【4】《Android加载大图Bitmap发生OOM(Out Of Memmory Error)解决方案》链接地址:http://blog.csdn.net/zhangphil/article/details/48130053
【5】《Android圆形头像图Circle ImageView》链接地址:http://blog.csdn.net/zhangphil/article/details/44960551
【6】《Android View转换成图片保存》链接地址:http://blog.csdn.net/zhangphil/article/details/44217539
【7】《Android为图片添加水印文字》链接地址:http://blog.csdn.net/zhangphil/article/details/44200207
【8】《Android Drawable 转化成 Bitmap》链接地址:http://blog.csdn.net/zhangphil/article/details/43767535
【9】《Android设置头像,手机拍照或从本地相册选取图片作为头像》链接地址:http://blog.csdn.net/zhangphil/article/details/44829747

更多相关文章

  1. Android修改icon和roundIcon后,显示的图标还是默认的图片
  2. android中异步加载图片
  3. android 从相册中获取图片设置成头像的问题:
  4. android 设置背景图片
  5. android图片优化,内存释放处理
  6. Android 显示网络图片
  7. 在控件的任意位置显示图片
  8. 使用架包实现android异步加载图片
  9. android实现自定义相机以及图片的水印

随机推荐

  1. 关于android使用已有id,自己的id和系统id
  2. 模拟Android多点触控
  3. android中LayoutInflater的使用
  4. Android(安卓)studio获取sha1(调试版和发
  5. android的UI系统分析
  6. Android(安卓)开发学习小结(七)
  7. Android(安卓)模拟器的认识
  8. android sdk API level对应关系及下载地
  9. 我的Android进阶之旅------>Android利用
  10. android:contentDescription 的用途