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

在Android开发中,使用Picasso库可以方便地加载网络图片,并通过resize方法调整图片尺寸。本文介绍了如何利用Picasso进行图片加载,包括设置图片占位符和错误图,以及在点击事件中通过Transformation接口实现自定义图片适配手机屏幕大小的方法,避免resize方法在某些场景下的局限性。

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


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


               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值