Picasso的详细使用

    xiaoxiao2021-03-25  172

    先扯下淡,还记得前年下半年的时候我开始接触并使用Glide。 使用Glide的原因很简单,网络上各种夸Glide怎么怎么好,比如加载图片省内存,比如可以加载GIF图片,谷歌推荐使用等等。可是现在我又发现一个比较怪异的现象,网上大批的人开始说picasso怎么怎么好了,比如内存也可以很小,而且包小方法数少,可以减少发生64k的问题。

    先说说我当时使用glide的时候发生的问题,比如缓存到本地的图片根本取不到,如果想自己再次使用,就需要对原来的代码进行修改,比如把图片的路径存到集合里,手动再去调用这个集合(一年前)。 再比如图片RAGB值的改变,只能通过全局来改变,但是我经常遇到需要切换的问题(用默认的话-如白底的图片会背景会一些黄色很难看)就不能很好的切换等等。

    说了那么多为的就是证明我不是一个随波逐流的人哈哈…….

    下面我们就来看看picaso API的一个小总结

    第一添加依赖

    compile 'com.squareup.picasso:picasso:2.5.2'

    第二简单使用

    Picasso.with(this).load("http://www.haha.cn/large/aaaa.jpg").into(mImageView);

    第一个参数 上下文 第二个参数 图片地址 或者 file 或者uri 第三个参数 显示的imageview

    第三API

    //加载默认图片 .placeholder(R.drawable.default_bg) //加载图片失败时显示的图片 .error(R.drawable.error_iamge) //设置图片的尺寸 .resize(400,200) //从配置文件读取宽高 .resizeDimen(R.dimen.image_width,R.dimen.image_height) //设置图片的尺寸必须小于原图片的尺寸 .onlyScaleDown() //图片裁剪和imageview的ScalType一个意思 .centerCrop() //将整张图片完全展示但是图片大小不能小于imageview的大小 .centerInside() //自动帮我们测理view的大小然后调用resize方法,但view宽高必须固定 .fit() //旋转图片 .rotate(180,200,100) 后两个是圆心位置 .rotate(180) //可以对图片进行转换 缩放 蒙版 形状 需要implements Transformation transform(new Transformation(this)) //设置图片加载的优先级有三种优先级,LOW、NORMAL、HIGH 默认没选,调用fetch是最低的 //跳过内存缓存 //NO_CACHE:表示处理请求的时候跳过检查内存缓存 //NO_STORE: 表示请求成功之后,不将最终的结果存到内存 .memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE) .networkPolicy(NetworkPolicy.NO_CACHE)//跳过磁盘缓存 //添加标签 tag("PhotoTag") cancelTag(Object tag) //取消设置了给定tag的所有请求 pauseTag(Object tag) //暂停设置了给定tag 的所有请求 resumeTag(Object tag) //resume 被暂停的给定tag的所有请求 //获取图片比起glide方便多了 Bitmap bitmap = Picasso.with(this).load(URL).get();

    第四 构建局部实例 我们直接调用的话是全局实例

    Picasso.Builder builder =newPicasso.Builder(this); //构造一个Picasso Picasso picasso = builder.build(); //加载图片 picasso.load(URL) .into(mImageView);

    第五 配置自定义下载器 downLoader public class CustomDownloader implements Downloader {

    @Override public Response load(Uri uri, int networkPolicy) throws IOException { return null; } @Override public void shutdown() { } } //配置下载器 builder.downloader(new CustomDownloader()); //构造一个Picasso Picasso picasso = builder.build();

    第六配置缓存

    // 设置缓存大小 LruCache cache = new LruCache(5*1024*1024); builder.memoryCache(cache);

    第七配置线程池

    //配置线程池 ExecutorServiceexecutorService=Executors.newFixedThreadPool(8); builder.executor(executorService);

    第八配置全局的 Picasso Instance 我们希望我们的这些自定义配置能在整个项目都应用上,并且只配置一次

    setSingletonInstance

    参考:图片加载框架-Picasso最详细的使用指南

    转载请注明原文地址: https://ju.6miu.com/read-11203.html

    最新回复(0)