首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自定义View学习之路(五)————彩虹环

简介:

  走往android的进阶之路,避不开自定义View的学习和绘制。这里以绘制一个可用的彩虹环为例。开始系统的学习View的绘制。 彩虹环需求:

  • 这是一个持续的动画
  • 背景颜色是上一次动画的动画颜色
  • 当所有颜色循环完后从头开始
  • 当一个颜色绘制完整个圆环后开始下次个颜色的绘制

彩虹环

使用:

  • 可以通过ringSpeed以及ringWidth在XML中设置动画速度和圆环宽度
  • 圆环大小直接通过宽高度设置即可
  • 对外提供设置:颜色集合设置、圆环宽度设置、圆环速度设置。
  • 对外提供获取:当前动画进度获取

心得和体会:

  • 该View没有重写onMeasure方法。所以如果warp-content会铺满整个屏幕等同于match-parent。因为这个View大部分情况是会指定宽高度的。
  • 由于控件的宽高度并不一定是正方形。而圆的半径是通过宽高度的一半来获取的。所以,需要先取宽高度的小的值计算半径,当然得记得减去圆环的宽度。
  • 同样在控件为矩形的情况下保证彩虹环出现在控件中间。需要利用Rect对其定型左上坐标以及右下坐标。利用圆心坐标和半径计算。
  • 绘制圆时记得设置空心以及消除锯齿
  • 绘制圆时提供圆心坐标、半径以及画笔即可
  • 绘制圆弧的时候提供Rect、起始角度(-90)、当前进度(0~360)、useCneter(ture时会在圆心处生出一个类似时钟的指针跟着旋转)、画笔。
  • 以上绘制均是划线,圆环需要通过setStrokeWidth设置圆环宽度。可以理解为线的宽度
举报
领券