本人也是刚开始研究属性动画,一些知识点也不是太懂,如果下面有说错的地方,大神们给一些指正的评论。
今天做了一个demo,就是属性动画和自定义控件小圆球从左上角移动到右下角,并且伴随着颜色渐变。效果基本如下:
好了,下面说一下我的思路:
属性动画可以分为两种,这一种是用valueAnimator.ofObject方式做到的,这种方式需要自己定义模式,
我首先定义了两个类,一个为原点类,一个为颜色类,就是下面这样:
然后在自己定义的模式里面计算开始到结束,原点和颜色的差值,并且返回这两个类的实例
在自己定义的颜色模式中,用到一个新的API,这个方法的大意就是:自己定义颜色的argb,最后再转成int类型的color,然而这两个自己定义的模式,里面的一个算法,我给你们写成公式:值=开始值+分段*(结束值-开始值)
我这里面没有导源码,所以你们或许不懂这三个参数v,o,t1,这三个参数分别是:v=fraction,o=startValue
t1=endValue.
当计算好自己定义的模式之后,然后开始设计动画的效果
设置动画效果的代码可以自己封装到一个方法中比如:startAnim(),设置完动画效果之后之后就是去绘制控件的ondraw方法了,相信写到这,大家大概能明白一些,自己定义的实体类
,在重写模式的方法中不断被实例不断作为返回值被返回,就是为了在ondraw方法中调用,然后确定控件的位置和颜色:
还有一些定义的全局变量也给大家展示一下吧:
private Paint paint; public static final float RADIUS = 50f; private Point currentPoint; private circleColor currentColor;
做到这里,这个demo基本就做完了,只需要在布局里面调用者个自定义控件,便会实现文章开头的效果了,快去试一下吧。