您的位置:首页 > 理论基础 > 计算机网络

android高效加载网络图片

2016-03-09 00:00 218 查看
摘要: android高效加载网络图片

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

我用的是Picasso包来加载图片,picasso是一个非常优秀的图片处理包,下载地址如下:http://square.github.io/picasso/ 。用picasso来加载图片我们只需要一部就可以搞定:

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

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

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

通过这几个步骤我们就可以把我们的图片加载进我们的imageView中

方法说明 :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()"。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: