为什么使用Picasso

传统的加载网络图片。

public void saveToFile(String destUrl) {FileOutputStream fos = null;BufferedInputStream bis = null;HttpURLConnection httpUrl = null;URL url = null;int BUFFER_SIZE = 1024;byte[] buf = new byte[BUFFER_SIZE];int size = 0;try {url = new URL(destUrl);httpUrl = (HttpURLConnection) url.openConnection();httpUrl.connect();bis = new           BufferedInputStream(httpUrl.getInputStream());fos = new FileOutputStream("c:\\haha.gif");while ((size = bis.read(buf)) != -1) {fos.write(buf, 0, size);}fos.flush();} catch (IOException e) {} catch (ClassCastException e) {} finally {try {fos.close();bis.close();httpUrl.disconnect();} catch (IOException e) {} catch (NullPointerException e) {}}}@Overridepublic CharSequence getAccessibilityClassName() {return CheckBox.class.getName();}

使用Picasso加载

Picasso.with(context).load("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2812025359,799095506&fm=23&gp=0.jpg").into(imageView);

Picasso的优点

Picasso可以自动处理Android上图像加载的许多常见缺陷:

  1. 处理ImageView回收和下载取消在适配器
  2. 复杂的图像转换与最小的内存使用
  3. 自动内存和磁盘缓存。

自动检测适配器重新使用,并取消以前的下载。

@Override public void getView(int position, View convertView, ViewGroup parent) {SquaredImageView view = (SquaredImageView) convertView;if (view == null) {view = new SquaredImageView(context);}String url = getItem(position);Picasso.with(context).load(url).into(view);
}

图片转换

转换图像以更好地适应布局并减少内存大小

Picasso.with(context).load(url).resize(50, 50).centerCrop().into(imageView)

您还可以为更高级的效果指定自定义转换。
然后将此类的实例传递给transform方法。

public class CropSquareTransformation implements Transformation {@Override public Bitmap transform(Bitmap source) {int size = Math.min(source.getWidth(), source.getHeight());int x = (source.getWidth() - size) / 2;int y = (source.getHeight() - size) / 2;Bitmap result = Bitmap.createBitmap(source, x, y, size, size);if (result != source) {source.recycle();}return result;}@Override public String key() { return "square()"; }
}

利用Picasso可以设置下载前显示的图片,可以设置下载出错后的图片

Picasso.with(context).load(url).placeholder(R.drawable.user_placeholder).error(R.drawable.user_placeholder_error).into(imageView);

可以设置本地资源,图片,文件

Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/jian.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);

有问题可留言,你的支持我最大的动力

Android开发必备之Picasso加载图片相关推荐

  1. Android 开发笔记 ListView异步加载图片

    当ListView需要在线获取数据,并且列表中需要显示图片时,友好的处理方式是使用异步加载图片的方式. 这是因为LIstView中显示的内容是分为两部加载的,第一次加载文本信息(包含图片的uri地址) ...

  2. Android开发之使用createFromStream加载图片发现图片变小

    我们在开发过程中经常要将sd卡或网络图片加载为Drawable来使用.有很多人为了方便使用Drawable.createFromStream(stream, "src"). 但是使 ...

  3. android实现新闻内容显示功能,Android开发实现自定义新闻加载页面功能实例

    本文实例讲述了Android开发实现自定义新闻加载页面功能.分享给大家供大家参考,具体如下: 一.概述: 1.效果演示: 2.说明:在新闻页面刚加载的时候,一般会出现五种状态 未知状态(STATE_U ...

  4. Android框架之路——Glide加载图片(结合RecyclerView、CardView)

    Android框架之路--Glide加载图片 一.简介: 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开 ...

  5. android grideview 图片png透明,Android完美解决GridView异步加载图片和加载大量图片时出现Out Of Memory问题...

    众所周知,我们在使用GridView或者ListView时,通常会遇到两个棘手的问题: 1.每个Item获取的数据所用的时间太长会导致程序长时间黑屏,更甚会导致程序ANR,也就是Application ...

  6. picasso加载图片

    添加配置文件 1.下载路径:picasso-2.5.2.jar的下载路径:https://github.com/square/picasso compile 'com.squareup.picasso ...

  7. Android开发之ListView异步加载图片

    ListView这个控件对于大家肯定不会陌生,即使你是初学者相信也会用ListView.因为ListView这个控件实在是太常用,可以说基本上每一个项目开发都会用到它,今天这篇博客主要讲解,ListV ...

  8. android多种方式实现异步加载图片

    记得之前做安卓应用时都是在2.2以下的版本,如果在UI线程中进行耗时操作,比如http,socket等 会产生android.os.NetworkOnMainThreadException 如果异步加 ...

  9. Android之使用Android-AQuery异步加载图片(一)

    第一节:转载地址(http://www.cnblogs.com/lee0oo0/archive/2012/10/25/2738299.html) // 必须实现AQuery这个类 AQuery aq ...

最新文章

  1. Javascript及Jquery获取元素节点以及添加和删除操作
  2. LSTM之父:吐槽了两年,来划划重点:“这5篇最高引论文都源于我们。”
  3. linux 并行执行脚本,在bash / linux中并行运行shell脚本
  4. Debug Tensorflow: tensorflow.python.framework.errors_impl.InvalidArgumentError: OpKernel ‘ConcatV2‘
  5. 产生数(floyd+高精度计算)
  6. 【java】StringBuilder的常用两种方法与练习
  7. django【orm操作】
  8. mysql 账户管理_Mysql账户管理原理与实现方法详解
  9. java三目运算符简化代码_如何使用传播运算符简化代码
  10. RabbitMQ七种队列模式介绍与应用场景(通俗易懂)
  11. lstm网络一般训练多少轮_Pytorch的LSTM的理解
  12. 简易版的等待/唤醒方法(sleep,wait,await,park区别)适合面试回答
  13. 在chinapub上搜“搜索引擎”,按照销量排序《搜索引擎零距离》居然是第一
  14. SVN Server使用说明
  15. IBM的量子云计算准备开始商用 我国此前已实现量子加密产品商用
  16. python应该怎么样自学_Python该如何自学?
  17. 触发器详解——(三)T触发器
  18. 单例模式与反射的攻防之【 道高一尺,魔高一丈 】
  19. 行人重识别(ReID) ——技术实现及应用场景
  20. 零输入响应,零状态响应,全响应

热门文章

  1. Soft:QtDesigner软件界面的简介、案例应用之详细攻略
  2. 阿童木评三国之街亭之败
  3. 《少林达摩易筋经》惊现淘宝网! 1
  4. Nagios运维软件安装以及使用教程
  5. Kaggle —— “You have exceeded the quota for this request. Please wait a bit and try again later.“
  6. python实现遗传算法实例_基于Python的遗传算法特征约简(附代码)
  7. 2023管理员申请书怎么写最新范文
  8. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第一章:Android开发环境搭建
  9. 实战打靶集锦-018-decoy
  10. 情迁机器人Tim_情迁QQ机器人1.8.2更新说明