开发中经常要用到圆形头像,怎么快速实现呢?
用picasso框架配合一个工具类(代码如下:)
public class MainActivity extends AppCompatActivity { private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); Picasso.with(this).load("http://img1.touxiang.cn/uploads/20120522/22-090423_51.jpg").transform(new Transformation() { @Override public Bitmap transform(Bitmap source) {//下载以后的内存中的bitmap对象 //压缩处理(60px*60px) Bitmap bitmap = BitmapUtils.zoom(source, 60, 60); //圆形绘制 bitmap = BitmapUtils.circleBitmap(source); //释放资源 source.recycle(); return bitmap; } @Override public String key() { //这里不能返回null return ""; } }).into(iv); } }工具类:
public class BitmapUtils { public static Bitmap circleBitmap(Bitmap source){ //默认只对宽进行处理 int width=source.getWidth(); Bitmap bitmap=Bitmap.createBitmap(width,width,Bitmap.Config.ARGB_8888); Canvas canvas=new Canvas(bitmap); Paint paint=new Paint(); //设置抗锯齿 paint.setAntiAlias(true); canvas.drawCircle(width/2,width/2,width/2,paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(source,0,0,paint); return bitmap; } /** * 注意width、height参数的类型必须是float * */ public static Bitmap zoom(Bitmap source,float width,float height){ Matrix matrix=new Matrix(); //图片进行压缩处理 matrix.postScale(width/source.getWidth(),height/source.getHeight()); Bitmap bitmap = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, false); return bitmap; } }如此,便完成了自定义圆形头像的设置啦!(别忘记添加网络权限咯)