Android开发必备之Picasso加载图片
为什么使用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上图像加载的许多常见缺陷:
- 处理ImageView回收和下载取消在适配器
- 复杂的图像转换与最小的内存使用
- 自动内存和磁盘缓存。
自动检测适配器重新使用,并取消以前的下载。
@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加载图片相关推荐
- Android 开发笔记 ListView异步加载图片
当ListView需要在线获取数据,并且列表中需要显示图片时,友好的处理方式是使用异步加载图片的方式. 这是因为LIstView中显示的内容是分为两部加载的,第一次加载文本信息(包含图片的uri地址) ...
- Android开发之使用createFromStream加载图片发现图片变小
我们在开发过程中经常要将sd卡或网络图片加载为Drawable来使用.有很多人为了方便使用Drawable.createFromStream(stream, "src"). 但是使 ...
- android实现新闻内容显示功能,Android开发实现自定义新闻加载页面功能实例
本文实例讲述了Android开发实现自定义新闻加载页面功能.分享给大家供大家参考,具体如下: 一.概述: 1.效果演示: 2.说明:在新闻页面刚加载的时候,一般会出现五种状态 未知状态(STATE_U ...
- Android框架之路——Glide加载图片(结合RecyclerView、CardView)
Android框架之路--Glide加载图片 一.简介: 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开 ...
- android grideview 图片png透明,Android完美解决GridView异步加载图片和加载大量图片时出现Out Of Memory问题...
众所周知,我们在使用GridView或者ListView时,通常会遇到两个棘手的问题: 1.每个Item获取的数据所用的时间太长会导致程序长时间黑屏,更甚会导致程序ANR,也就是Application ...
- picasso加载图片
添加配置文件 1.下载路径:picasso-2.5.2.jar的下载路径:https://github.com/square/picasso compile 'com.squareup.picasso ...
- Android开发之ListView异步加载图片
ListView这个控件对于大家肯定不会陌生,即使你是初学者相信也会用ListView.因为ListView这个控件实在是太常用,可以说基本上每一个项目开发都会用到它,今天这篇博客主要讲解,ListV ...
- android多种方式实现异步加载图片
记得之前做安卓应用时都是在2.2以下的版本,如果在UI线程中进行耗时操作,比如http,socket等 会产生android.os.NetworkOnMainThreadException 如果异步加 ...
- Android之使用Android-AQuery异步加载图片(一)
第一节:转载地址(http://www.cnblogs.com/lee0oo0/archive/2012/10/25/2738299.html) // 必须实现AQuery这个类 AQuery aq ...
最新文章
- Javascript及Jquery获取元素节点以及添加和删除操作
- LSTM之父:吐槽了两年,来划划重点:“这5篇最高引论文都源于我们。”
- linux 并行执行脚本,在bash / linux中并行运行shell脚本
- Debug Tensorflow: tensorflow.python.framework.errors_impl.InvalidArgumentError: OpKernel ‘ConcatV2‘
- 产生数(floyd+高精度计算)
- 【java】StringBuilder的常用两种方法与练习
- django【orm操作】
- mysql 账户管理_Mysql账户管理原理与实现方法详解
- java三目运算符简化代码_如何使用传播运算符简化代码
- RabbitMQ七种队列模式介绍与应用场景(通俗易懂)
- lstm网络一般训练多少轮_Pytorch的LSTM的理解
- 简易版的等待/唤醒方法(sleep,wait,await,park区别)适合面试回答
- 在chinapub上搜“搜索引擎”,按照销量排序《搜索引擎零距离》居然是第一
- SVN Server使用说明
- IBM的量子云计算准备开始商用 我国此前已实现量子加密产品商用
- python应该怎么样自学_Python该如何自学?
- 触发器详解——(三)T触发器
- 单例模式与反射的攻防之【 道高一尺,魔高一丈 】
- 行人重识别(ReID) ——技术实现及应用场景
- 零输入响应,零状态响应,全响应
热门文章
- Soft:QtDesigner软件界面的简介、案例应用之详细攻略
- 阿童木评三国之街亭之败
- 《少林达摩易筋经》惊现淘宝网! 1
- Nagios运维软件安装以及使用教程
- Kaggle —— “You have exceeded the quota for this request. Please wait a bit and try again later.“
- python实现遗传算法实例_基于Python的遗传算法特征约简(附代码)
- 2023管理员申请书怎么写最新范文
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第一章:Android开发环境搭建
- 实战打靶集锦-018-decoy
- 情迁机器人Tim_情迁QQ机器人1.8.2更新说明