長圖加載需要使用一個(gè)系統(tǒng)新的api:
BitmapRegionDecoder

image.png
具體使用代碼:
/**
* bitmap 長圖加載
*
* 這里會使用一個(gè)新的api:BitmapRegionDecoder
*/
private void loadLongBitmap() {
InputStream is = null;
try {
is = getAssets().open("big.png");
//第二個(gè)參數(shù),代表這個(gè)輸入流是否共享
//false:不共享,BitmapRegionDecoder單獨(dú)拷貝一份供自己使用,下面is.close()也不影響
BitmapRegionDecoder bitmapRegionDecoder = BitmapRegionDecoder.newInstance(is, false);
Rect rect = new Rect(0,0,100,100);
//第一個(gè)參數(shù)rect 代表加載這個(gè)長的bitmap的區(qū)域,超出這個(gè)rect的其他部分不加載
//這個(gè) rect就是用來限制加載長圖的區(qū)域
Bitmap bitmap = bitmapRegionDecoder.decodeRegion(rect, null);
// TODO: 2018/10/17 得到的這個(gè)bitmap可用于展示
} catch (IOException e) {
e.printStackTrace();
}finally {
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}