您的位置:首页 > 移动开发 > Android开发

android之Picasso加载图片用法以及Transformation自定义加载图片

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

      我用的是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()"。

               
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 经验 开发 图片