博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用户头像的圆形显示
阅读量:6655 次
发布时间:2019-06-25

本文共 2207 字,大约阅读时间需要 7 分钟。

【问题说明】:

在显示注册用户的头像的时候,如果是矩形的话会比较难看,一般处理成圆形,需要2步:

step1:将图片按照matrix进行压缩成正方形;

step2:将正方形图片转为圆形图片

【工具类】:

下面提供2个方法:

public class BitmapUtils {
//图片的压缩,将图片source压缩成宽为w,高为h的图片 public static Bitmap zoom(Bitmap source,float w ,float h){//参数2,3:必须不能声明int Matrix matrix = new Matrix();//导包不要导错 matrix.postScale(w / source.getWidth(),h / source.getHeight()); Bitmap bitmap = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); return bitmap; }

//将一张图片转为圆形头像    public static Bitmap circleBitmap(Bitmap source) {
//获取图片的宽度 int width = source.getWidth(); //创建一个与source等宽的Bitmap对象 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); //设置图片相交情况下的处理方式 //setXfermode:设置当绘制的图像出现相交情况时候的处理方式的,它包含的常用模式有哪几种 //PorterDuff.Mode.SRC_IN 取两层图像交集部门,只显示上层图像,注意这里是指取相交叉的部分,然后显示上层图像 //PorterDuff.Mode.DST_IN 取两层图像交集部门,只显示下层图像 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); //source:理解为上层图片 canvas.drawBitmap(source, 0, 0, paint); return bitmap; } } 【效果图】: 【使用工具类加载头像的代码】:
//读取本地保存用户信息的文件为一个User对象 User user = ((BaseActivity) getActivity()).readLogin(); //设置用户名 textView11.setText(user.UF_ACC); //加载头像 Picasso       .with(getActivity())       .load(user.UF_AVATAR_URL)       .transform(new Transformation() {
@Override public Bitmap transform(Bitmap source) {
//对图片进行压缩处理 Bitmap zoom = BitmapUtils.zoom(source, DensityUtil.dip2px(AppNetConfig.HEAD_WITH), DensityUtil.dip2px(AppNetConfig.HEAD_WITH)); //对图片进行圆形处理 Bitmap circleBitmap = BitmapUtils.circleBitmap(zoom); //回收Bitmap,否则报错 source.recycle(); return circleBitmap; } @Override public String key() {
return "";//此方法不能返回null.否则报异常 } }) .into(imageView1);
 

转载于:https://www.cnblogs.com/libuyi/p/5904535.html

你可能感兴趣的文章
python简介
查看>>
python文件读写,以后就用with open语句
查看>>
精通脚本***学习笔记(二)
查看>>
typedef用法
查看>>
【Android必备】应用小部件概述(23)
查看>>
IOS图片的拉伸技巧
查看>>
semaphore.h
查看>>
python3版本mysql的操作
查看>>
foreach和map
查看>>
第一次,触碰Web App项目,栽过的那些坑。
查看>>
ubuntu下xampp配置虚拟主机
查看>>
Shallow copy and Deep copy
查看>>
C语言小结
查看>>
Java的JDBC事务详解(转)
查看>>
Linux防火墙的关闭和开启(转)
查看>>
curl_setopt函数相关应用及介绍(转)
查看>>
vue小技巧
查看>>
CDOJ 92 Journey LCA乱搞
查看>>
无损压缩图片心得(二)
查看>>
正则化
查看>>