Android加載超大圖檔
-
- 一、目标
- 二、體驗位址
- 三、準備工作
-
- 1. 加載超大圖檔
- 2. 擷取圖檔大小
- 3. 使用者互動
- 四、subsampling-scale-image-view
- 五、Final
一、目标
實作超大圖檔的檢視功能。
- 《金剛經 右街僧 錄準公》26800 x 640(32.7M)
- 《金剛經 王玠》15404 x 950(27.9M)
- 《溪山清遠圖》17008 x 720 (23.4M)
二、體驗位址
神馬筆記最新版本:【神馬筆記Version1.1.0_beta.apk】
三、準備工作
1. 加載超大圖檔
2018年12月17日,華為在長沙召開新品釋出會,正式釋出旗下nova系列新機華為nova 4,主打極點全面屏及4800萬超高像素拍照體驗。
以RGB_565圖檔格式計算4800萬像素占用記憶體大小。
2 x 48 x 1000 x 1000 / 1024 / 1024 ≈ 91.55M
如果直接加載完整的圖檔,大概需要占用91.55M記憶體空間,對于當下記憶體配置都是6G起步的手機,占用内容不算大,但Android為每個應用配置設定的記憶體是有限的,一次性加載如此大的圖檔,非常容易導緻應用OOM崩潰。
是以必須使用加載部分區域的方式來加載圖檔。
Android提供了
BitmapRegionDecoder
來實作這個功能。
2. 擷取圖檔大小
通過
BitmapFactory.Options
的
inJustDecodeBounds
可以不加載圖檔而擷取圖檔大小。
此外,還需要考慮Exif資訊,處理圖檔旋轉或者翻轉屬性。
Android提供了
ExifInterface
處理Exif資訊。
3. 使用者互動
- 輕按兩下縮放圖檔
- 雙指縮放圖檔
- 移動圖檔
- ……
四、subsampling-scale-image-view
subsampling-scale-image-view完美解決以上所有問題。
GitHub項目位址:https://github.com/davemorrissey/subsampling-scale-image-view
WIKI幫助手冊:https://github.com/davemorrissey/subsampling-scale-image-view/wiki
五、Final
确定目标需求,到GitHub上尋找成品與半成品代碼可以有效得提供開發效率。
待神馬筆記功能逐漸穩定後,會繼續開源相關代碼。
通路已開源的代碼可以通路 https://github.com/jicanghai37927/WhatsAndroid 。
這個項目為神馬筆記的原型項目。