android 头像球_Android一行代码实现圆形头像

效果图

在开发APP中,经常要实现圆形头像,那么该如何实现呢?

要裁剪吗,要重写draw函数吗?不用,只用一行代码就可以实现

Glide实现圆形图像

Glide.with(mContext)

.load(R.drawable.iv_image_header)

.error(R.drawable.ic_error_default)

.transform(new GlideCircleTransform(mContext))

.into(mImage);

其中load后为载入的图像,error后为出错时载入的图像,transform是对其修改,我们也是通过这个GlideCirTransForm来修改的,使用的话要把mContext替换为你自己的activty,mImage为图片载入的位置

使用之前的准备

1.添加项目依赖

compile 'org.greenrobot:eventbus:3.0.0'

compile 'com.squareup.retrofit2:retrofit:2.0.2'

compile 'com.squareup.retrofit2:converter-gson:2.0.2'

compile 'com.github.bumptech.glide:glide:3.7.0'

compile 'org.jetbrains:annotations-java5:15.0'

compile 'in.srain.cube:ultra-ptr:1.0.11'

compile 'com.wang.avi:library:1.0.5'

2.导入GlideCircleTransform.java文件

GlideCircleTransform.java代码如下:

package com.sina.weibo.sdk.demo.utils;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapShader;

import android.graphics.Canvas;

import android.graphics.Paint;

import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;

import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;

public class GlideCircleTransform extends BitmapTransformation {

public GlideCircleTransform(Context context) {

super(context);

}

@Override

protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {

return circleCrop(pool, toTransform);

}

private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {

if (source == null) return null;

int size = Math.min(source.getWidth(), source.getHeight());

int x = (source.getWidth() - size) / 2;

int y = (source.getHeight() - size) / 2;

Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);

Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);

if (result == null) {

result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);

}

Canvas canvas = new Canvas(result);

Paint paint = new Paint();

paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));

paint.setAntiAlias(true);

float r = size / 2f;

canvas.drawCircle(r, r, r, paint);

return result;

}

@Override

public String getId() {

return getClass().getName();

}

}

完成这两步,你就可以使用那行代码完成你自己的圆形头像啦!

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

latex 无穷_《天龙3D》新资料片“骑乐无穷”即将上线

驭风逐战,骑乐无穷。11月12日金庸正版授权、全民第一武侠RPG手游《天龙3D》新资料片“骑乐无穷”即将上线!全新坐骑装备系统开启,升星养成坐骑装备;全新坐骑相关副本四绝夺魁,多人闯关PVP、PVE组队竞技;元旦主题月即将开启,趣味游…

广州大学计算机学院毕业设计,【广州大学】毕业设计(计算机科学与技术)专业要求...

广州大学成人高等教育毕业设计专业要求【专业名称】计算机科学与技术【适用范围】非学位论文【执笔者】谷岩【完成形式】个人独立【写作形式】毕业设计【写作要求】1.目标毕业设计是计算机科学与技术专业人才培养的重要环节。其主要目标是培养学生综合应用计算机科学…

实验二+140+阮晨曦

---恢复内容开始--- 一、实验目的 掌握覆盖测试的基本方法和实践 二、实验要求 运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结。 三、实验内容 (1)设计某程序的路径覆盖测…

hadoop重命名文件_Hadoop -- 3. 从Flume到HDFS

提起Flume, 就先讲一下它的基本作用, 它可以从不同的数据源导入到一个集中的地方存放起来,基本架构如下图所示*上图为Flume Data Flow Model, Ref: Flume 1.9.0 User Guide本篇文章会做一个小demo, 数据从spooling directory来(而不是官网图中画的Web Server), 先经过channel, …

osgi 模块化_OSGI –模块化您的应用程序

osgi 模块化由于我是模块化,低耦合,高凝聚力等的大力拥护者,所以…… 我相信这项技术是我们使用Java平台创建应用程序的突破。 使用OSGi,创建高度可扩展的应用程序非常简单,例如参见Eclipse IDE。 我的目的不是要深入展…

电脑计算器_CPA考生注意!2020考场只允许带这种计算器

注册会计师每年采用闭卷、计算机化考试方式。根据往年考生的反应,计算器的使用在考场上发挥了非常大的作用。值得大家注意的是,并不是所有的计算器都能带进考场,考试对计算器有什么要求?如何挑选到正确的计算器?我们一起来看看&a…

最早的齿轮计算机,世界最古老“计算机”出土后110年,科学家终于解开它的秘密...

伦敦大学学院(UCL)的研究团队,提出了“一个激进的新模型,与所有数据相匹配,并最终优雅地展示出了古希腊人眼中的宇宙”。1901年,在希腊岛屿安提基特拉的海岸,潜水员偶然发现了一艘古代沉船。沉船中的一件文物&#xff…

通过Java 8中的Applicative Builder组合多个异步结果

几个月前,我发布了一个出版物 ,在其中详细解释了我提出的名为Outcome的抽象,它通过强制使用语义帮助了我很多 没有副作用的代码。 通过遵循这种简单(但功能强大)的约定,我最终将任何类型的故障(…

在python中是否可以使用if作为变量名_在Python中可以使用if 作为变量名_python使用符号 标示注释...

在Python中可以使用if 作为变量名答:" src"" style"max-width: 100%; display: inline;">往来款项清查结果的账务处理与货币资金、存货和固定资产不同,它不通过“待处理财产损溢”账户。答:√明嘉靖皇帝是昏君答…

diskgenius 接触“只读“失败_相亲总是失败,这三个步骤你都做了吗?

原标题:相亲总是失败,这三个步骤你都做了吗?虽然现在爱情很稀缺,但想必大家都想找个男女朋友,想谈一场甜甜的恋爱。 而相亲,无疑是脱单最直接、最有效的方式,没有之一。但不管是经人介绍&#x…

shell中的常用通配符,字符类

因为 shell 频繁 地使用文件名,shell 提供了特殊字符来帮助你快速指定一组文件名。这些特殊字符叫做通配符。 通配符     意义 *         匹配任意多个字符(包括零个或一个)  ?         匹配任意一个字符&…

agv系统介绍_重载AGV小车主要结构及导航原理是什么?

相信对AGV有过了解的朋友都知道,当我们在进行工业生产过程时,重载AGV小车可以帮我们实现无人驾驶搬运的一个工作,可以保证AGV在运行时不用通过人工干预的情况下来完成现场的搬运工作,通过无人驾驶技术进行自主导航将货物自动从起始位置搬运到…

怎样打开计算机音频服务器,win10系统音频服务器未运行的修复步骤

有关win10系统音频服务器未运行的操作方法想必大家有所耳闻。但是能够对win10系统音频服务器未运行进行实际操作的人却不多。其实解决win10系统音频服务器未运行的问题也不是难事,小编这里提示两点:1、在1、windows10“音频服务未运行”,有个红色小叉咋办…

rgb fusion检测不到显卡_【论文阅读27】Co-Fusion

主要内容物体级别的语义SLAM。维护一个背景模型和多物体模型,每个模型由面元地图表示。基于运动分割和语义信息检测运动物体。使用基于ICP对齐的几何误差和基于颜色差异的光度误差跟踪背景模型(相机位姿)和多个运动物体。根据[8]的方法更新每…

修改linux系统用户最大线程数限制

linux系统对线程数量有个最大限制,当达到系统限制的最大线程数时使用账号密码ssh到系统时是无法登陆的,会报Write failed: Broken pipe,或者是shell request faied on chanel 0。在root用户下切换到该用户也会报错,su clouder&…

u盘插在电脑上灯亮没有反应_u盘插入电脑无反应怎么解决 u盘插入电脑无反应解决方法【步骤介绍】...

u盘的轻巧、便捷使其在生活工作中重要的工具设备,在使用u盘的过程中插入的 u盘无法识别 ,电脑对插入的u盘无反应,遇到这样的问题该怎么办呢?接下来小编就和大家介绍 电脑无法识别u盘 的解决办法。1 、使用其它的移动设备插在电脑usb接口上&a…

recaptcha_与reCAPTCHA的Spring集成

recaptcha有时我们只需要CAPTCHA ,这是一个可悲的事实。 今天,我们将学习如何与reCAPTCHA集成。 因为主题本身并不是特别有趣和高级,所以我们将通过使用Spring Integration处理低级细节来过度设计(?)。 Goo…

vbs关不掉的计算机窗口,恶搞之关不掉的窗口.vbs脚本

过完小年,到处都是过年的气息,给大家介绍一些轻松好玩的东西:一个好玩的脚本——关不掉的窗口。1、在电脑上创建一个XXX.txt文本,把代码复制进去,不要写注释,也不要在句尾留空格,保存&#xff0…

honeywell新风系统控制面板说明_如何选择新风系统中的新风设备万家舒适家

喜欢点击蓝字关注我们吧我们常说“看人不光要看外表,更要看内在”,这个说法对新风机同样适用。新风机的内部件主要分为:动力模块、电控模块、净化模块、热交换模块这四个部分。首先、动力模块,就是风机。从我们消费者角度来看&…

第八周学习进度条

转载于:https://www.cnblogs.com/baiyue/p/7110849.html