长图加载需要使用一个系统新的api:
image.pngBitmapRegionDecoder
具体使用代码:
/**
* bitmap 长图加载
*
* 这里会使用一个新的api:BitmapRegionDecoder
*/
private void loadLongBitmap() {
InputStream is = null;
try {
is = getAssets().open("big.png");
//第二个参数,代表这个输入流是否共享
//false:不共享,BitmapRegionDecoder单独拷贝一份供自己使用,下面is.close()也不影响
BitmapRegionDecoder bitmapRegionDecoder = BitmapRegionDecoder.newInstance(is, false);
Rect rect = new Rect(0,0,100,100);
//第一个参数rect 代表加载这个长的bitmap的区域,超出这个rect的其他部分不加载
//这个 rect就是用来限制加载长图的区域
Bitmap bitmap = bitmapRegionDecoder.decodeRegion(rect, null);
// TODO: 2018/10/17 得到的这个bitmap可用于展示
} catch (IOException e) {
e.printStackTrace();
}finally {
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
网友评论