方法一:

利用Paint的setXfermode()方法,

http://blog.csdn.net/t12x3456/article/details/10432935这篇博客详细介绍了该方法

这个方法主要是运用于两个图层的复合裁剪,根据里面参数的不同可以完成不同的裁剪,详情看下张图

图片来自鸿洋大神的blog,我也是从大神博客中了解的,写一点自己的理解.

其实原理很简单

1.在画布上画一个圆canvas.drawCircle()方法

2.设置paint的setXfermode()方法

3.画bitmap,最后叠加

原理是不是很简单,注意代码中可能需要用到drawable转bitmap

下面的贴一下源码

private Bitmap drawableToBitmap(){int height = drawable.getIntrinsicHeight();int width = drawable.getIntrinsicWidth();Bitmap.Config config = drawable.getOpacity()!=PixelFormat.OPAQUE? Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565;Bitmap bitmap = Bitmap.createBitmap(width,height,config);Canvas canvas = new Canvas(bitmap);drawable.setBounds(0, 0, getWidth(), getHeight());drawable.draw(canvas);return bitmap;}

这里就是想一个drawable画在了一个bitmap对象的画布上。

方法二:利用BitmapShader

BitmapShader是Shader的子类,主要是用来做着色工作。

当Paint使用了setShader()后,其在画在画布上的东西画利用其Shader进行着色,也就是你画一个圆本身应该是你设置的Color,

而设置了shader类后,就用使用你shader对象进行着色,而你的shader对象正是一张图片,设置圆形后就成了圆形图片了撒。

步骤:

1.设置Shader

BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
paint.setShader(bitmapShader);

2.随手画圆

安卓圆形头像制作两种方法。相关推荐

  1. Android 圆形头像的两种实现方式

    Android 圆形头像的两种实现方式 前言 这篇博客只是为了做一个记录而已,方便而后查询,核心代码都是直接采用鸿洋博客里面的代码的. 圆形头像在实际开发中实际很常见,一般来说,主要有两种实现方式: ...

  2. Flutter实现圆形头像的几种方法

    Flutter的ClipRect的使用场景 ClipRect可以用来裁剪容器内部的子元素,以避免超出容器的范围而溢出.常见的应用场景有: 将一个图像裁剪成不同形状,如圆形.方形.椭圆等: 将一个复杂的 ...

  3. Android实现圆形图像的两种方法(Glide和Picasso)

    Android实现圆形图像的两种方法 先上效果图 Glide Picasso CircleTransform.java(圆形图片工具类) 先上效果图 Glide 在app的build.gradle中引 ...

  4. Wordpress开发 - 获取作者头像的两种方法

    写在前面 今天又被一个头像坑搞惨了,一般我们获取作者的信息是都需要在循环判断中才可以使用的!比如获取作者名称 <?php the_author(); ?> .如果没有在 <?php ...

  5. 圆形头像的7种显示方法

    牙叔教程 简单易懂 效果展示 环境 手机: Mi 11 Pro Android版本: 11 Autojs版本: 9.0.11 图片形状: 正方形 圆形头像的7种显示方法 第1种: 使用Shapeabl ...

  6. iphone怎么变android,如何将安卓变ios7 将安卓变iphone的两种简单方法分享

    第一种将安卓变ios7方法 如果你非常喜欢iOS 7的设计风格却又不愿意放弃Android系统带来的自由体验,或许让你的Android系统看起来像iOS 7是一个不错的选择.现在通过一些Android ...

  7. 如何将unity3d动画嵌入html,在Unity3D中使用精灵动画引擎制作动画的两种方法

    7月28日消息,如今的游戏玩家对于游戏角色的动作要求越来越高,给开发者提出了众多的要求,工作量也相应上升.那么如何才能简单快速地制作角色动画以提升效率呢?下面就和大家分享两个在Unity3D中使用精灵 ...

  8. android查ip地址,安卓手机查看IP地址的两种方法,  二、进入手机状态

    安卓手机查看IP地址的两种方法, 二.进入手机状态 无论是电脑链接宽带上网还是手机链接wifi上网,当我们在链接网络后,会自动分配一个独立的IP地址,对于电脑端的上网IP地址我们可通过ipconfig ...

  9. 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你

    在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 目录 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 1.文章中的标题较多,每个单独调整格式太费劲,这里我们用一 ...

  10. unity 2D游戏开发 制作帧动画的两种方法

    本小主在这里给大家分享一下unity 2D游戏开发中制作帧动画的两种方法. 比较简单,一学即会. 方法一: 是用代码控制: 先创建一个2D工程.导入图片资源,并设置texture的texture ty ...

最新文章

  1. android usb设备节点_(五)树莓派3开发环境搭建——6.树莓派USB与tty串口号绑定...
  2. Spring Boot配置@spring.profiles.active配置
  3. linux中刻录iso到光盘
  4. 金和oa:自定义表单函数计算一段时期内的工作日
  5. 35岁前需要完成的事
  6. 班级html网页设计实例,静态网页班级网站设计.doc
  7. MySQL 数据库备份与还原
  8. 这5种数据挖掘技术,大数据玩的贼溜!
  9. 持续发力Web技术 英特尔驱动万物智能互联
  10. 为什么今年的苹果手机不支持5G?原因有四点,网友:错怪库克了
  11. 关于timestamp时间范围
  12. linux运维基础[系统磁盘管理]——————存储设备的识别、df、du、fsck
  13. 判断大学生体侧项目中立定跳远成绩的等级
  14. 2023第十四届蓝桥杯 C/C++大学生A组省赛 满分题解
  15. 常见命令之 head与tail
  16. docx4j 简介、中文文档、中英对照文档 下载
  17. 【samba】Ubuntu16安装samba服务器
  18. 面试题(1)最全BAT面试精华汇总
  19. 2023计算机毕业设计SSM最新选题之javaJava网名推荐系统5j37v
  20. C语言之递增与递减运算符

热门文章

  1. Windows10怎么样添加并设置为卓越性能模式
  2. SpringCloud-SpringCloud Bus服务总线的介绍(Day9)
  3. PHP处理微信昵称特殊符号过滤方法
  4. 三流Offer看薪资、二流的Offer看平台,一流的Offer看...
  5. 渗透测试实验_安装Windows 2003 企业版
  6. 财会行业男女薪资比例matlab,2004:会计师事务所薪资调查分析报告
  7. 二手升腾网络计算机,瘦客户机终端网络计算机专用计算机
  8. 易班打卡——自动填写健康日报
  9. github添加设置ssh key
  10. SiamRPN:利用区域建议孪生网络进行视频跟踪