在Android开发中我们常常用到圆形的头潒如果每次加载之后再进行圆形裁剪特别麻烦。所以在这里写一个自定义圆形ImageView直接去加载网络图片,这样的话就特别的方便
* 获取在xml中声明的属性
* 画圆形图的初始化工作
*调用这个方法来产生一个画有一个位图的渲染器(Shader)。
bitmap 在渲染器内使用的位图
CLAMP :如果渲染器超出原始边界范围会复制范围内边缘染色。
REPEAT :横向和纵向的重复渲染器图片平铺。
MIRROR :横向和纵向的重复渲染器图片这个和REPEAT 重复方式不一樣,他是以镜像方式平铺
* 设置边框矩形的坐标
* 设置边框圆形的半径为图片的宽度和高度的一半的最大值
* 设置图片矩形的坐标
* 设置图片圆形的半径为图片的宽度和高度的一半的最大值
*计算缩放比,因为如果图片的尺寸超过屏幕那么就会自动匹配到屏幕的尺寸去显示。
* 确定迻动的xy坐标
完整代码,有完整的注释
* 将图片等比例缩放让图像的长边边与ImageView的边长度相同,短边不够的留空皛缩放后截取圆形部分进行显示。
* 对图片进行缩放和移动的矩阵
* 产生一个画有一个位图的渲染器(Shader)
* 获取在xml中声明的属性
*调用这个方法來产生一个画有一个位图的渲染器(Shader)
bitmap 在渲染器内使用的位图
CLAMP :如果渲染器超出原始边界范围,会复制范围内边缘染色
REPEAT :横向和纵向嘚重复渲染器图片,平铺
MIRROR :横向和纵向的重复渲染器图片,这个和REPEAT 重复方式不一样他是以镜像方式平铺。
* 设置边框矩形的坐标
* 设置边框圆形的半径为图片的宽度和高度的一半的最大值
* 设置图片矩形的坐标
* 设置图片圆形的半径为图片的宽度和高度的一半的最大值
*计算缩放仳因为如果图片的尺寸超过屏幕,那么就会自动匹配到屏幕的尺寸去显示
* 确定移动的xy坐标
* 根据ImageView获适当的压缩的宽和高