对于一些需要加载超长图需求的同学,可能一开始使用使用bitmap或者inputstream转bitmap(或类似加载库)会发现出现图片太大加载不出来的问题(其实我也是遇到了这个问题ヽ(≧Д≦)ノ)。解决问题的思路可以参考Coding_the_world封装自己的库(然而我太菜了,就在网上找了一些开源库),比较流行的是Subsampling Scale Image View,而且里边封装了缩放功能。
实现思路是:使用glide把图片下载到本地(由于我使用的就是glide图片加载库),然后赋值。具体的操作如下:
1.添加依赖
com.davemorrissey.labs:subsampling-scale-image-view:3.5.0
2.具体代码
imageView = (SubsamplingScaleImageView) findViewById(R.id.imageView);
imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CUSTOM);
imageView.setMinScale(1.0F);//最小显示比例
imageView.setMaxScale(10.0F);//最大显示比例(太大了图片显示会失真,因为一般微博长图的宽度不会太宽)
finalString testUrl ="http://cache.attach.yuanobao.com/image/2016/10/24/332d6f3e63784695a50b782a38234bb7/da0f06f8358a4c95921c00acfd675b60.jpg";
//下载图片保存到本地
Glide.with(this)
.load(testUrl).downloadOnly(new SimpleTarget<File>() {
@Override
public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) {
// 将保存的图片地址给SubsamplingScaleImageView,这里注意设置ImageViewState设置初始显示比例
imageView.setImage(ImageSource.uri(Uri.fromFile(resource)), new ImageViewState(2.0F, new PointF(0, 0), 0));
}});
补充:
鉴于有人说缩放不了,现在我把代码补全,放到了github上,不明白的可以直接下载测试(具体的使用方法还是建议去看Subsampling Scale Image View的使用说明)
subsampling-scale-image-view还可以支持Picasso,传送门
推荐一下个人app
qq交流群:138485840
下载地址:微影
github:Ghost
欢迎大家下载和Star