Android编程学习之异步加载图片的方法

2019-12-10 19:58:56于海丽
  • return null;   }  
  • }   // 解码图像和缩放以减少内存的消耗  
  • private Bitmap decodeFile(File f) {   try {  
  • // 解码图像尺寸   BitmapFactory.Options o = new BitmapFactory.Options();  
  • o.inJustDecodeBounds = true;   BitmapFactory.decodeStream(new FileInputStream(f), null, o);  
  • // 找到正确的缩放值。这应该是2的幂。   final int REQUIRED_SIZE = 70;  
  • int width_tmp = o.outWidth, height_tmp = o.outHeight;   int scale = 1;  
  • while (true) {   if (width_tmp / 2 < REQUIRED_SIZE  
  • || height_tmp / 2 < REQUIRED_SIZE)   break;  
  • width_tmp /= 2;   height_tmp /= 2;  
  • scale *= 2;   }  
  • // 设置恰当的inSampleSize可以使BitmapFactory分配更少的空间   // 用正确恰当的inSampleSize进行decode  
  • BitmapFactory.Options o2 = new BitmapFactory.Options();   o2.inSampleSize = scale;  
  • return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);   } catch (FileNotFoundException e) {  
  • }   return null;  
  • }   /**  
  • * PictureToLoad类(包括图片的地址和ImageView对象)   *  
  • * @author loonggg   *  
  • */  private class PictureToLoad {  
  • public String url;   public ImageView imageView;  
  • public PictureToLoad(String u, ImageView i) {   url = u;  
  • imageView = i;   }  
  • }   public void stopThread() {  
  • pictureLoaderThread.interrupt();   }  
  • // 存储下载的照片列表   class PicturesQueue {  
  • private Stack<PictureToLoad> picturesToLoad = new Stack<PictureToLoad>();   // 删除这个ImageView的所有实例