自定义view————开关button
陷入自定义view的坑越陷越深,励志要把自定义view撸给遍,今天给大家介绍一下自定义view————开关button,这个在很多app中都能用的,废话不多说,先来给动图。
分析一下上面的效果:四个状态:关闭状态、关闭->打开过程、打开状态、打开->关闭过程,结合ValueAnimator动效实现这个过程
关闭状态
绘制一个圆角矩形(drawRoundRect()方法),再画一个圆(drawCircle()),默认关闭就画好了
|
|
打开状态
绘制了关闭状态,再绘制打开状态,,最后绘制关闭->打开状态,打开->关闭状态,其实这里和关闭状态类似的,只是画圆的x、y的位置不一样而已
|
|
关闭->打开状态
ValueAnimator动效中的addUpdateListener()的回调通过valueAnimator.getAnimatedValue();来重新绘制过程,计算圆在状态变化时的x,y及其圆角矩形的right,bottom值来动态改变然后重新绘制。
记录动态的变化值
根据变化值重新绘制
|
|
打开->关闭状态
这个动画状态和上面的动画状态同理
记录变化值
根据变化值重新绘制
上面的四种状态介绍完毕了,大致功能就实现了,接下来介绍一些属性的设置、四种状态设置的方法、点击事件等
四种状态的设置
|
|
点击事件执行打开关闭
|
|
属性的设置
xml设置
attrs.xml
|
|
|
|
xml中设置
|
|
代码设置
|
|
考虑实践应用中,需要获取相关状态,上传至服务器/根据状态设置相关设置等
|
|
其他方法也可以实现,根据自己的需求去做相应的更改