使用Picasso将加载的图片变成圆形
http://blog.it985.com/14794.html,感谢该作者
Picasso的GITHUB地址:https://github.com/square/picasso。
怎么实现各种各样的图片样式呢?
其原理是在Picasso里提供了Transformation这个接口,实现该接口,编写绘制图形的代码。
实现该接口的两个抽象方法transform(),key()。
代码从原博客拷贝过来的。
public class CircleTransform implements Transformation {@Overridepublic 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;}@Overridepublic String key() {return "circle";}}这样使用它:
Picasso.with(activity).load(mayorShipImageLink).transform(new CircleTransform()).into(ImageView);
浙公网安备 33010602011771号