第252篇 大图与长图加载:区域解码
先把结论放在前面:大图与长图的问题不是"怎么显示",而是"怎么不把整张图读进内存"。一张 3000×20000 的长图,即使按ARGB_8888也超过 200 MB,任何设备都放不下。解法只有一个:不解码整张图,只解码当前需要的区域。 这就是区域解码(BitmapRegionDecoder)与分块加载(BitmapTileDecoder)两套机制。面试里这题属于"图片专题的进阶部分"。答得浅的是"用BitmapRegionDecoder局部解码";答得深的是能讲清两种解码器的分工与限制、为什么BitmapRegionDecoder在较新版本被标记为不推荐、inSampleSize与区域解码的组合策略,以及长图手势联动时的解码时机与缓存设计。两种区域解码机制的分工机制适用输入输出状态BitmapRegionDecoder超大图(超过屏幕数倍)只能是单个文件的连续编码一块区域位图部分版本已标记不推荐