安卓自定义圆形图片

开发中经常要用到圆形头像,怎么快速实现呢?

用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;
    }
}
如此,便完成了自定义圆形头像的设置啦!(别忘记添加网络权限咯)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值