美文网首页
初尝自定义View和属性动画:实现一个转动的进度条

初尝自定义View和属性动画:实现一个转动的进度条

作者: 橙一升 | 来源:发表于2016-12-18 02:08 被阅读1485次

    最近看到了郭霖大神写的博客,关于属性动画的使用的。Android属性动画完全解析(上),初识属性动画的基本用法

    觉得讲的真的是很有意思,通俗易懂。一口气看完上中下三篇,腰不疼气不喘呀哈哈。。。

    刚好公司的UI设计师来跟我说现在新的设计中会有一个评价好评率,到时旁边要有一个圆环来代表进度,最好还要有动画效果,就那种一开始就转动,从0转到当前进度的效果。UI大概长这个样子:

    其实这个的效果就很像是京东小白信用的那个动画效果了。

    刚好看完郭霖大神对于属性动画的讲解,感觉这个应该难度不是很大。于是说干就干。

    首先是要先分析一下View的构成

    也就是说其实这个View可以分为三层:

    1、最底下一层,是一个不会变的圆

    2、一个深色的,代表进度的扇形

    3、中间的的小圆

    其中1和3是不会变的,所谓的进度其实就是2中扇形的圆心角的度数了

    所以我们要分层的把View画出来

    先创建一个自定义的View

    在自定义的View中先定义好即将要用到的变量,同时重写一下最重要的 onDraw();

    然后是先定义好xml中即将要用到的自定义View的属性

    定义在项目的attrs.xml文件中

    然后重写自定义View构造函数

    把xml中的属性读取进来,同时初始化一下即将要用的画笔

    PS:使用完 TypeArray 之后记得调用一下 TypeArray.recycle()释放资源

    好了,准备工作做的差不多了,我们来先画第一个圆

    在onDraw()中调用一下,看下效果

    效果

    第一个圆已经成功的画出来了

    现在画代表进度的扇形

    效果

    为了能看到效果,先让扇形的角度等于270,实际上扇形的角度是要给属性动画控制的,根据动画的时长来控制

    再画一个中间的小圆

    调用一下

    效果

    呐,现在是不是已经长得有点像射鸡狮要求的了啦,可能你会说颜色不对啊,可别忘记了我们早就预留了自定义属性呢

    修改成射鸡狮制定的颜色及圆环的宽度之后,是不是基本就是这个圆了。

    但目前为止,自定义View是画完了,接下来就是添加动画了

    动画是使用新的属性动画,以前的补间动画和帧动画已经不能满足我们的需要了

    如果对于属性动画不了解的可以看看Android属性动画完全解析(上),初识属性动画的基本用法,然后顺便把它接下去的中、下篇也看一下,就能理解了。

    最后,实现动画效果

    动画的实现很简单,只是对目标角度进行一个平滑的过渡,然后在过渡的过程中不断的重画扇形

    调用动画

    效果

    动画是不是已经很顺畅的跑起来了

    可以开始整理代码了

    首先我们肯定不满足参数只能在xml指定,特别是代表进度的扇形的角度,这个必须是拿到真实数据之后才能计算得到的。所以,有必要把一些接口给暴露出来

    考虑到View的可定制性,我暴露以下这些

    这样就可以供我们在得到实际数据之后对View进行定制了

    最终,在我编写的UI界面中使用

    好吧,其实我好困,把文章写成了流水账了。。。不过没关系,主要只是记录一下这一次的心得,同时也分享一下,不能总是只看不分享吧哈哈~睡觉睡觉,有空再改改好了~

    如果这篇文章又帮到你的话,请点一下‘喜欢’,我会更努力的创作的

    相关文章

      网友评论

          本文标题:初尝自定义View和属性动画:实现一个转动的进度条

          本文链接:https://www.haomeiwen.com/subject/jjuamttx.html