今天我们学习圆形头像的实现原理,先上图

demo实例

基本上能满足一般的圆形头像功能实现

其中包括控件的大小,控件四个角的弧度控制以及外圈的颜色和宽度

现在我们看看具体的使用:

android:id="@+id/rotating_circle_view"

android:layout_width="100dp"

android:layout_height="100dp"

android:src="@mipmap/pic"

app:circle_color="#f00"

app:circle_kind="all"

app:circle_width="2dp" />

其中有三个自定义属性

app:circle_color 代表外圈的颜色

app:circle_width 代表外圈的宽度

app:circle_kind 代表圆形的展示方式,分五种

从上面的图中我们是可以看出来的,取值分别为:

具体的使用方式就是这么简单,下面我们看看具体是怎么实现的

首先我们需要知道BitmapShader和Matrix这俩个东西

具体的作用说下,BitmapShader用于设置图片平铺方式,分三种:

:CLAMP(拉伸)、MIRROR(镜像)、REPETA(重复)

这里借用别人的图片一下看看是什么样子

拉伸

镜像

重复

大致表达的意思就是当图片大小不足控件的大小时,图片以外空白区域如何展示

该案例里面我们使用了CLAMP功能,具体代码实例:

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

Matrix 这个本身叫做矩阵,放在图片处理中可以用于图片的拉伸,缩放,倾斜等一些操作,当我们的图片不满我们的控件时,我们可以控件图片的大小以适应控件,大概就是这个作用。

该案例里面我们用了俩个功能,缩放和位移,代码示意:

matrix.setScale(scale, scale);

matrix.postTranslate((int) (dx + 0.5f) + borderWidth, (int) (dy + 0.5f) + borderWidth);

当这俩种各种设置好之后,matrix可以设置给BitmapShader,代码:

bitmapShader.setLocalMatrix(matrix);

bitmapShader可以设置给paint,代码:

imgPaint.setShader(bitmapShader);

从bitmapShader的实例化那里我们就已经获取到了图片bitmap的必要信息,此时经过这些操作,bitmap的信息已经被携带在了paint里面,下面我们就可以利用携带了bitmap信息的paint任意画图,那么圆形头像的实现就很简单了,代码:

canvas.drawCircle(getWidth() / 2, getHeight() / 2, imgRadius, imgPaint);

看见了,就是利用最简单的画圆就可以实现我们的圆形头像,那么外边圆这里就不用细说了吧,再花一个半径比这个大一点的圆即可,好了,今天的自定义view就学习到这,代码实例见:

代码点我1-3

android 圆形头像方案,android圆形头像实现相关推荐

  1. android+反调试+方案,Android反调试笔记

    1)代码执行时间检测 通过取系统时间,检测关键代码执行耗时,检测单步调试,类似函数有:time,gettimeofday,clock_gettime. 也可以直接使用汇编指令RDTSC读取,但测试AR ...

  2. android 屏幕录制方案,Android录屏的三种解决方案

    本文总结三种用于安卓录屏的解决方案: adb shell命令screenrecord MediaRecorder, MediaProjection MediaProjection , MediaCod ...

  3. android 插件化 方案,Android应用开发之Android 插件化,qihoo360插件方案配置教程

    本文将带你了解Android应用开发Android 插件化,qihoo360插件方案配置教程,希望本文对大家学Android有所帮助. Android 插件化,qihoo360插件方案 目录 Andr ...

  4. android tts实现方案,Android自动朗读(TTS)的实现

    前言: Android提供了自动朗读支持.可以对指定文本内容进行朗读,从而发生声音:还允许把文本对应的音频录制成音频文件,方便以后播放.Android的自动朗读主要通过TextToSpeech来完成, ...

  5. android 屏幕录制方案,Android录屏的三种方案

    本文总结三种用于安卓录屏的解决方案: adb shell命令screenrecord MediaRecorder, MediaProjection MediaProjection , MediaCod ...

  6. Android音频录制方案,Android录屏的三种方案

    本文总结三种用于安卓录屏的解决方案: adb shell命令screenrecord MediaRecorder, MediaProjection MediaProjection , MediaCod ...

  7. android专项测试 方案,Android性能专项测试.pdf

    目录 前言 battery-historian试用 MemoryMonitor工具 HeapViewer工具 AllocationTracker(DeviceMonitor) AllocationTr ...

  8. android布局优化方案,Android启动优化-布局优化

    Android启动优化-布局优化 安卓应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的情况看,安卓开发还是一个热火朝天的发展,但高级人才却相对较少,如今移动互联网的开发者也逐渐开始注重插入 ...

  9. android 启动优化方案,Android 项目优化(五):应用启动优化

    介绍了前面的优化的方案后,这里我们在针对应用的启动优化做一下讲解和说明. 一.App启动概述 一个应用App的启动速度能够影响用户的首次体验,启动速度较慢(感官上)的应用可能导致用户再次开启App的意 ...

  10. Android音频录制方案,Android录音,录制其他App播放的声音

    Android录音,录制其他App播放的声音 从Android10(SDK 29)版本开始,可以设置录音App的源为其他App,这样就可以录制其他App播放的声音 此方案有以下注意几点 设置了源为其他 ...

最新文章

  1. 中科院刘焕勇老师知识图谱关于schema博客
  2. 【C++】 66_C++ 中的类型识别
  3. 分分钟入门【Nodejs】—一个网页是如何生成的
  4. Kubernetes的ConfigMap说明
  5. 关于负载均衡的三种传输模式(反向代理,透传,三角)
  6. 《JavaScript专家编程》——第1章 对象和原型 1.1鸟瞰JavaScript
  7. 7,7显示选中的目标信息
  8. PHP+MySql+PDO实现简单登录、注册
  9. C语言求两个数的最大公约数
  10. Machine Learning ——Homework 8
  11. grub2 中的boot命令
  12. c语言while函数作用,c语言while(c语言while循环用法)
  13. To_Heart—题解——POI2012 Rendezvous
  14. 2020博客之星年度总评选 - 显示排名
  15. WordPress 安装时常见的数据库的错误
  16. 交换机与路由器的基本工作原理
  17. 使用xilinx最新工具vitis2019.2,定制zc702开发板linux系统
  18. fftshift小技巧
  19. 报考浙大MBA项目的关键点之一:提前批面试解析
  20. C语言:学生信息管理系统(详解+源码)

热门文章

  1. Condition实现线程通信
  2. 大厂面试通行证- Java基础
  3. log4j2远程执行漏洞原理以及解决方案
  4. UE5实现PS图层样式投影效果
  5. 怎么选择外贸邮箱,收费企业邮箱大全
  6. VMware14安装windows7的详细过程
  7. 退款java_APP支付 + 退款(JAVA实现)
  8. Excel常用技巧(一)
  9. 世界线(bzoj2894)(广义后缀自动机)
  10. 2020牛客暑期多校训练营(第九场)I .The Crime-solving Plan of Groundhog