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

2016-12-18  本文已影响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界面中使用

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

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

上一篇下一篇

猜你喜欢

热点阅读