六、Bitmap长图加载

长图加载需要使用一个系统新的api:

BitmapRegionDecoder

image.png

具体使用代码:

 /**
     * 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();
                }
            }
        }
    }

你可能感兴趣的:(六、Bitmap长图加载)