【Android 基础】图片加载框架之Picasso利器

简介

Picasso是Square公司出品的一个强大的图片下载和缓存图片库
1)在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。
2)使用复杂的图片压缩转换来尽可能的减少内存消耗
3)自带内存和硬盘二级缓存功能

下载地址

https://github.com/square/picasso

使用准备

导入jar包或在modulegradle文件中添加
compile 'com.squareup.picasso:picasso:2.5.2'

功能以及api

1)基本用法

Picasso.with(context).load(imageUrl).into(imageView);
//第一个参数为上下文,第二个为加载图片的url,第三个为显示控件

2)图片路径load()

加载 SD卡资源:load("file://"+ Environment.getExternalStorageDirectory().getPath()+"/xxoo.jpg")

加载 assets资源:load("file:///android_asset/xxoo.gif") 
//在main文件夹下新建一个 assets  文件夹

加载 drawable资源:load("android.resource://包名/drawable/xxoo")

加载 http资源:load("http:www.xxoo.com/xxoo.jpg") 

3)图片加载的过程

- placeholder(xxx). 设置资源加载过程中的显示的Drawable
- error(xxx).设置load失败时显示的Drawable
- into(xxx) 设置资源加载到的目标 包括ImageView Target

4)图片裁剪示例

Picasso.with(this).load("http://www.xxoo.cn/image/XXOO.jpg")  
                .resizeDimen(R.dimen.iv_width,R.dimen.iv_height)  
                .into(iv);

//resizeDimen()重新设置大小

5)工具类

public class PicassoUtil {
    //加载本地图片
    public static void setImg(Context context, int resId, ImageView imgView){
        Picasso.with(context)
                .load(resId)
                .config(Bitmap.Config.RGB_565)//8位RGB位图
                .fit()
                .into(imgView);
    }
    //按照一定的宽高加载本地图片,带有加载错误和默认图片
    public static void setImg(Context context,int resId,ImageView imgView,int weight,int height){
        Picasso.with(context)
                .load(resId)//加载本地图片
                .config(Bitmap.Config.RGB_565)//8位RGB位图
                .resize(weight,height)//设置图片的宽高
                .into(imgView);//把图片加载到控件上
    }
    //加载网络图片到imgview,带有加载错误和默认图片
    public static void setImg(Context context, String imgurl, int resId, ImageView imgView){
        Picasso.with(context)
                .load(imgurl)//加载网络图片的url
                .config(Bitmap.Config.RGB_565)//8位RGB位图
                .placeholder(resId)//默认图片
                .error(resId)//加载错误的图片
                .fit()//图片的宽高等于控件的宽高
                .into(imgView);//把图片加载到控件上
    }
    public static void setImg(Context context, String imgurl, ImageView imgView){
        Picasso.with(context)
                .load(imgurl)//加载网络图片的url
                .config(Bitmap.Config.RGB_565)//8位RGB位图
                .fit()//图片的宽高等于控件的宽高
                .into(imgView);//把图片加载到控件上
    }
    //加载网络图片到Viewpager
    public static void setImg(Context context, String imgurl, ViewPager imgView){
        Picasso.with(context)
                .load(imgurl)//加载网络图片的url
                .config(Bitmap.Config.RGB_565)//8位RGB位图
                .fit()//图片的宽高等于控件的宽高
                .into((Target) imgView);//把图片加载到控件上
    }
    //加载网络图片到Viewpager,带有加载错误和默认图片
    public static void setImg(Context context, String imgurl, int resId, ViewPager imgView){
        Picasso.with(context)
                .load(imgurl)//加载网络图片的url
                .config(Bitmap.Config.RGB_565)//8位RGB位图
                .placeholder(resId)//默认图片
                .error(resId)//加载错误的图片
                .fit()//图片的宽高等于控件的宽高
                .into((Target) imgView);//把图片加载到控件上
    }
    //按照设定的宽高加载网络图片到imgview
    public static void setImg(Context context, String imgurl,ImageView imgView,int weight,int height){
        Picasso.with(context)
                .load(imgurl)//加载网络图片的url
                .config(Bitmap.Config.RGB_565)//8位RGB位图
                .resize(weight,height)//设置图片的宽高
                .into(imgView);//把图片加载到控件上
    }
    //按照设定的宽高加载网络图片到imgview,带有加载错误和默认图片
    public static void setImg(Context context, String imgurl, int resId,int weight,int height, ImageView imgView){
        Picasso.with(context)
                .load(imgurl)//加载网络图片的url
                .config(Bitmap.Config.RGB_565)//8位RGB位图
                .placeholder(resId)//默认图片
                .error(resId)//加载错误的图片
                .resize(weight,height)//设置图片的宽高
                .into(imgView);//把图片加载到控件上
    }
}

例子–基本用法

普通加载

 // 普通加载图片
        Picasso.with(PicassoActivity.this)
              .load("http://www.veyron.cn/image/xxoo.jpg")
                .into(ivPicasso1);

裁剪

  // 裁剪的方式加载图片
        Picasso.with(PicassoActivity.this)
            .load("http://www.veyron.cn/image/xxoo.jpg")
                .resize(100,100)
                .into(ivPicasso2);

旋转180度

 // 选择180度
        Picasso.with(PicassoActivity.this)
            .load("http://www.veyron.cn/image/xxoo.jpg")
                .rotate(180)
                .into(ivPicasso3);")

欢迎关注我的微信公众号:

这里写图片描述

发布了89 篇原创文章 · 获赞 37 · 访问量 23万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章