Android学习之图片异步加载框架Picasso
16lz
2021-01-23
原创地址:http://mcode114.com/android/network/picasso/
-
项目地址:https://github.com/square/picasso
-
官网地址: http://square.github.io/picasso/
-
类别:网络
-
开发环境:Android Studio
Picasso
Picasso是Square公司开源的一个Android图形缓存库。可以实现图片下载和缓存功能。仅仅只需要一行代码就能完全实现图片的异步加载。使用复杂的图片转换技术降低内存的使用。在adapter中需要取消已经不在视野范围的ImageView图片资源的加载。
用法
通过配置gradle配置将Picasso框架引入项目。
compile'com.squareup.picasso:picasso:2.5.2'
除了加载网络图片picasso还支持加载Resources, assets, files, content providers中的资源文件。
//加载网络图片Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView1);//加载Resources资源Picasso.with(context).load(R.drawable.landing_screen).into(imageView2);//加载assets资源Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView3);//加载files资源Picasso.with(context).load(newFile(...)).into(imageView4);
Picasso能自动检测到Adapter的重用,会取消上次的加载
@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)
你还可以指定更高级效果的自定义转换。
publicclass CropSquareTransformation implementsTransformation { @Override publicBitmap transform(Bitmap source) { intsize = Math.min(source.getWidth(), source.getHeight()); intx = (source.getWidth() - size) /2; inty = (source.getHeight() - size) /2; Bitmap result = Bitmap.createBitmap(source, x, y, size, size); if(result != source) { source.recycle(); } returnresult; } @Overridepublic String key() { return"square()"; }}
Picasso支持加载过程中和加载错误时显示对应图片
Picasso.with(context) .load(url) //加载过程中的图片显示 .placeholder(R.drawable.user_placeholder) //加载失败中的图片显示 //如果重试3次(下载源代码可以根据需要修改)还是无法成功加载图片,则用错误占位符图片显示。 .error(R.drawable.user_placeholder_error) .into(imageView);
默认情况下,Android使用ARGB_8888设置图片质量
Picasso.with( imageView.getContext() ) .load(url) .config(Bitmap.Config.RGB_565) .into(imageView);
ALPHA_8:每个像素占用1byte内存Android中有四种,分别是:
-
ARGB_4444:每个像素占用2byte内存
-
ARGB_8888:每个像素占用4byte内存
-
RGB_565:每个像素占用2byte内存
在开发阶段,我们可以通过调用setIndicatorsEnabled(true)方法,设置Picasso可以根据图片来源的不同在图片上做出不同颜色的标记。
更多相关文章
- Android模糊处理实现图片毛玻璃效果
- 进击的Android之异步加载
- Android在TextView中设置图片显示问题
- 【Android】Android实现截取当前屏幕图片并保存至SDCard
- android中类似于gif 实现图片的动画效果
- 刚开始安卓,记录一个刚做的图片缩放程序
- Android基础小技术点:Android ListView设置背景图片及分割线、周
- Android -- 加载大图片的方法