自定义View学习之路(五)————彩虹环
2018-07-27 本文已影响14人
饮水思源为名
简介:
走往android的进阶之路,避不开自定义View的学习和绘制。这里以绘制一个可用的彩虹环为例。开始系统的学习View的绘制。
彩虹环需求:
- 这是一个持续的动画
- 背景颜色是上一次动画的动画颜色
- 当所有颜色循环完后从头开始
- 当一个颜色绘制完整个圆环后开始下次个颜色的绘制
使用:
- 可以通过ringSpeed以及ringWidth在XML中设置动画速度和圆环宽度
- 圆环大小直接通过宽高度设置即可
- 对外提供设置:颜色集合设置、圆环宽度设置、圆环速度设置。
- 对外提供获取:当前动画进度获取
心得和体会:
- 该View没有重写onMeasure方法。所以如果warp-content会铺满整个屏幕等同于match-parent。因为这个View大部分情况是会指定宽高度的。
- 由于控件的宽高度并不一定是正方形。而圆的半径是通过宽高度的一半来获取的。所以,需要先取宽高度的小的值计算半径,当然得记得减去圆环的宽度。
- 同样在控件为矩形的情况下保证彩虹环出现在控件中间。需要利用Rect对其定型左上坐标以及右下坐标。利用圆心坐标和半径计算。
- 绘制圆时记得设置空心以及消除锯齿
- 绘制圆时提供圆心坐标、半径以及画笔即可
- 绘制圆弧的时候提供Rect、起始角度(-90)、当前进度(0~360)、useCneter(ture时会在圆心处生出一个类似时钟的指针跟着旋转)、画笔。
- 以上绘制均是划线,圆环需要通过setStrokeWidth设置圆环宽度。可以理解为线的宽度