帶你走進Android之基礎篇--Bitmap加載


嗨,你終於來啦~
等你很久啦~
從今天開始天天分享一篇Android須要瞭解的知識點,喜歡的小夥伴歡迎關注,我會按期分享Android知識點及解析,還會不斷更新的BATJ面試專題,歡迎你們前來探討交流,若有好的文章也歡迎投稿。面試

昨天貢獻一個解壓縮zip文件的工具,今天咱們來說講bitmap加載~工具

Bitmap加載

一般來講在加載Bitmap的過程當中致使OOM的緣由是要加載的圖片太大,
但由於如今屏幕的尺寸都不大,就算是一個高分辨率的圖片,以小圖加載也就足夠了。
因此思路通常是,先獲取當前要顯示的ImageView區域大小,按大小縮放原圖而後加載。spa

獲取Bitmap大小

獲取Bitmap大小的過程不須要加載整張圖片,能夠用 BitmapFactory.Options 來獲取。code

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decode***
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
複製代碼

其中 decode方法有不少種,能夠根據須要選擇不一樣的實現,好比 stream, file等,
重點是inJustDecodeBounds設置爲 true 以後在解析的時候就不會加載到內存了,只獲取對應的寬和高。圖片

按縮放率加載圖片

比方說要把一張 960960的圖放到9696的ImageView裏,很簡單咱們應該縮放10倍,
縮放的過程能夠用 inSampleSize 這個參數來控制;ip

public Bitmap getResizedBitmap(File bitmap, int sampleSize) {
  BitmapFactory.Options options = new BitmapFactory.Options();
  options.inJustDecodeBounds = false;
  options.inSampleSize = sampleSize;
  return BitmapFactory.decodeFile(bitmap, options);
}
複製代碼

在真正加載圖片的時候 inJustDecodeBounds這個參數須要設置爲true,
此時將會真正的消耗內存。內存

上面這就是Android圖片加載的入門技巧了,也是個必備技巧,
在各類初級面試中都會問到,但願能幫到你們。get

相關文章
相關標籤/搜索