picasso初级基础
2016-04-19 22:11
323 查看
图片缓存(使用picasso框架进行处理)
picasso介绍:
用于处理图片下载、缓存、裁剪、缩放等功能的框架
英文介绍链接地址 : http://square.github.io/picasso/
picasson中的常用方法:
Picasso.with(context) 创建Picasso对象
Picasso.with(context).load(imageUrl).into(imageView);
自动将图像缓存在本地
通过图片压缩转换以减少内存消耗
Picasso.with(context).load(imageUrl).resize(50,50).centerCrop().into(imageView);
剪裁大小
Picasso.wint(context).load(imageUrl).placeholder(R.drawable.image_placeholder).error(R.drawable.ic);
占位符图片:所谓的占位符图像即当图片未正常显示时默认的图片,通过placeholder()设置,Picasso也支持设置图片显示错误时显示的默认图片,通过error()设置
Picasso.with(context).load(R.drawable.icon).into(imageView);
Picasso.with(context).load("file:///android_asset/Adnroid.png").into(imageView);
Picasso.with(context).load(new File(...)).into(imageView);
载入本地图片资源(以上3个)
Picasso.with(mContext).load(url).transform(transform)
自定义图片裁剪方式
picasso介绍:
用于处理图片下载、缓存、裁剪、缩放等功能的框架
英文介绍链接地址 : http://square.github.io/picasso/
picasson中的常用方法:
Picasso.with(context) 创建Picasso对象
Picasso.with(context).load(imageUrl).into(imageView);
自动将图像缓存在本地
通过图片压缩转换以减少内存消耗
Picasso.with(context).load(imageUrl).resize(50,50).centerCrop().into(imageView);
剪裁大小
Picasso.wint(context).load(imageUrl).placeholder(R.drawable.image_placeholder).error(R.drawable.ic);
占位符图片:所谓的占位符图像即当图片未正常显示时默认的图片,通过placeholder()设置,Picasso也支持设置图片显示错误时显示的默认图片,通过error()设置
Picasso.with(context).load(R.drawable.icon).into(imageView);
Picasso.with(context).load("file:///android_asset/Adnroid.png").into(imageView);
Picasso.with(context).load(new File(...)).into(imageView);
载入本地图片资源(以上3个)
Picasso.with(mContext).load(url).transform(transform)
自定义图片裁剪方式
使用方式: 导入框架 导入的位置:Project Structure –Dependencies 框架名称:com.squareup.picasso:picasso:2.5.2 通过Picasso调用方法实现相应功能即可 picasso中的常用方法: Picasso.with(context) 创建Picasso对象 Picasso.with(context).load(imageUrl).into(imageView); 自动将图像缓存在本地 通过图片压缩转换以减少内存消耗 Picasso.with(context).load(imageUrl).resize(50,50).centerCrop().into(imageView); 剪裁大小 Picasso.wint(context).load(imageUrl).placeholder(R.drawable.image_placeholder).error(R.drawable.ic); 占位符图片:所谓的占位符图像即当图片未正常显示时默认的图片,通过placeholder()设置,Picasso也支持设置图片显示错误时显示的默认图片,通过error()设置 加载本地图片: Picasso.with(context).load(R.drawable.icon).into(imageView); Picasso.with(context).load("file:///android_asset/Adnroid.png").into(imageView); Picasso.wiht(context).load(new File(...)).into(imageView); Picasso.with(mContext).load(url).transform(transform) 自定义图片裁剪方式 |
自定义裁剪的具体实现: 创建一个picasso包中的Transformation的子类 重写子类中的transform方法和key方法 通过Picasso对象调用tranform方法设置此子类对象即可 public class MyRoundTran implements Transformation { /* * 参数:下载好的原图片 * 返回值: 裁剪好的图片 * * 处理图片的裁剪 * */ @Override public Bitmap transform(Bitmap source) { //实现图片加圆角效果 Bitmap bitmap = Bitmap.createBitmap(source.getWidth(),source.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.BLUE); RectF rc = new RectF(0,0,source.getWidth(),source.getHeight()); canvas.drawRoundRect(rc,30,30,paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(source,0,0,paint); source.recycle(); return bitmap; } //通过返回值给自定义的裁剪方式设置一个名字key @Override public String key() { return "ayRound"; } } |
生成圆形图片: public CircleTransformation(Picasso picasso) { this .picasso = picasso; } @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 squaredBitmap = Bitmap.createBitmap(source, x, y, size, size); if (squaredBitmap != source) { source.recycle(); } Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig()); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); BitmapShader shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP); paint.setShader(shader); paint.setAntiAlias( true ); float r = size / 2f; canvas.drawCircle(r, r, r, paint); squaredBitmap.recycle(); return bitmap; } @Override public String key() { return "circle" ; } } 生成灰色图片: public class GrayscaleTransformation implements Transformation { private final Picasso picasso; public GrayscaleTransformation(Picasso picasso) { this .picasso = picasso; } @Override public Bitmap transform(Bitmap source) { Bitmap result = createBitmap(source.getWidth(), source.getHeight(), source.getConfig()); Bitmap noise; try { noise = picasso.load(R.drawable.noise).get(); } catch (IOException e) { throw new RuntimeException( "Failed to apply transformation! Missing resource." ); } BitmapShader shader = new BitmapShader(noise, REPEAT, REPEAT); ColorMatrix colorMatrix = new ColorMatrix(); colorMatrix.setSaturation( 0 ); ColorMatrixColorFilter filter = new ColorMatrixColorFilter(colorMatrix); Paint paint = new Paint(ANTI_ALIAS_FLAG); paint.setColorFilter(filter); Canvas canvas = new Canvas(result); canvas.drawBitmap(source, 0 , 0 , paint); paint.setColorFilter( null ); paint.setShader(shader); paint.setXfermode( new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY)); canvas.drawRect( 0 , 0 , canvas.getWidth(), canvas.getHeight(), paint); source.recycle(); noise.recycle(); return result; } @Override public String key() { return "grayscaleTransformation()" ; } } |
相关文章推荐
- 带你实现开发者头条APP(三) 首页实现
- C语言结构体学习笔记
- ZOJ 3602 Count the Trees
- MAN IP 学习及示例(centos7)
- 从头认识多线程-1.15 优先级特性-继承性
- LINUX下PHP开启短标签short_open_tag支持
- javaWeb中的request对象
- mysql 查询,切换数据库
- VS提示This function or variable may be unsafe.
- js中 replace() 全部替换实例
- 挂靠式自动加载
- 单核,多核CPU的原子操作
- 并查集
- matlab size、length和numel函数
- shell编程——条件判断
- 自定义View(四),onMeasure
- android-引导页的实现方式
- php中代码开始标志类型(<?php ?>,<? ?>,<?= ?>,<% %>,<%= %>)
- java list移除null元素
- eclipse中使用git