得得

开源

LargeImage

Android 加载大图 可以高清显示10000*10000像素的图片,轻松实现微博长图功能
Apache-2.0开源 快速上手
最新版本:1.1.0     更新时间:2018-02-12
实现细节:
每次LargeImageView的onDraw方法都会调用ImageManagerd的getDrawData(float imageScale, Rect imageRect)方法,imageRect为在View上图片显示的区域(需要加载的图片区域),imageScale 假设等于4的话,就是View上显示1像素,image要加载4个像素的区域(缩小4倍的图片) getDrawData(float imageScale, Rect imageRect)实现细节: 手势移动,图片显示区域会变化。比如显示区域是800800,向右移动2像素,难道要重新加载800800的图片区域? 所以我采用了图片切块的操作,分块的优化,所以我采用了基准块(图片比例是1,一个图片块的宽高的合理sise) BASE_BLOCKSIZE = context.getResources().getDisplayMetrics().heightPixels / 2+1; 图片缩放比例为1的话,图片块宽高是BASE_BLOCKSIZE 图片缩放比例为4的话,图片块宽高是4*BASE_BLOCKSIZE 图片没被位移,那么屏幕上显示横向2列,纵向getDisplayMetrics().heightPixels/BASE_BLOCKSIZE行
2.因为手势放大缩小操作要加载不同清晰度的图片区域,比如之前的图片缩放是4,现在缩放是4.2,难道要重新加载?
通过public int getNearScale(float imageScale)方法计算趋于2的指数次方的值(1,2,4,8,16) 比如3.9和4.2和4比较接近,就直接加载图片显示比例为4的图片块
3.之前没加载的区域,难道要空白显示么?
为了避免加载出现白色块,我会缓存当前比例的加载的图片块,以及2倍比例的图片块(之前加载过,并且当前还属于当前显示区域的,如果不是的话也不缓存它) 所以发现没有的话去拿其他比例的图片区去显示
研发人员
LargeImage的研发团队来自五湖四海,期待你的加入。