android高效加载网络图片

  需求:作项目的时候有一个需求:利用从网上加载图片到手机而且要调整成为自适应手机屏幕大小。git


      我用的是Picasso包来加载图片,picasso是一个很是优秀的图片处理包,下载地址以下:http://square.github.io/picasso/   。用picasso来加载图片咱们只须要一部就能够搞定:github


      ImageView imageView = (ImageView) view.findViewById(R.id.iv_image_browser);.ide

      RequestCreator requestCreator= Picasso.with(view.getContext()).load(IPConfig.URL+orderUrlList.get(position));spa

      requestCreator.resize(200,200).placeholder(R.drawable.image_loding).error(R.drawable.image_error).into(imageView);code


      经过这几个步骤咱们就能够把咱们的图片加载进咱们的imageView中orm


      方法说明 :with(Context context) :  告诉Picasso咱们须要加载图片的页面是哪一个context。 必须接口

                         load(String path):用于下载图片。必须事件

                         resize(int width,int height):用于设置图片的宽高。没必要须图片

                         placeholder(int ResId):当图片正在加载的时候显示的图片。没必要须图片处理

                         error(int ResId):图片加载失败时显示的图片。没必要须

                         into(ImageView imageview): 把图片显示在指定控件上。必须


效果图:

      

                        

     

                 楼主是把图片放在gradview中加载的。


               以后又有一个需求就是个人每一个item都设置了点击事件,当点击了会跳转进一个viewpager中浏览图片,浏览图片时我须要让其适应手机屏幕大小,显然 resize这方法如今不适用了,在网上找了一下发现有个transform方法他能够自定义显示图片,transform里面须要传一个实施了Transform接口的类,源码以下:

ImageView imageView = (ImageView) view.findViewById(R.id.iv_image_viewpager_browser); RequestCreator requestCreator = Picasso.with(view.getContext()).load(IPConfig.URL+arrayList.get(position)); requestCreator.transform(new MyTransfomation()).into(imageView);


private class MyTransfomation implements Transformation{@Override  public Bitmap transform(Bitmap bitmap) {double ratio = bitmap.getHeight()/ bitmap.getWidth();  screenHeight = (int)(screenWidth*ratio);  Bitmap newBitMap = Bitmap.createScaledBitmap(bitmap, screenWidth, screenHeight, true);  bitmap.recycle(); //这要回收一下 否则会抛出异常  return newBitMap;  }@Override  public String key() {return "square()";  }
}



须要注意的是 screemWidth是屏幕宽度。  建立了一个新的bitmap的时候,以后之前的bitmap须要回收否则会报错,key()方法返回的必须是"square()"。

相关文章
相关标签/搜索