先说下这个自定义VIEW的难点。
一是获得图片的宽高,这里给出一个方案:
好了,开始处理,首先需要有一个addLove的方法,在底部加一个花束图片嘛。
这里要说一下,这个自定义VIEW是继承自 RelativeLayout ,所以这里的写法是没毛病的。
看到这里开启了一个动画,来看看 getAnimator方法:
这里设为两个set ,一个是初始化时,慢慢出现图片,执行完后,再开始一个路径动画。
playSequentially就是执行,先执行完innerSet,再执行后面的,现在看看getBezierAnimator:
这个方法,其实就是一个三阶贝塞尔曲线。确定4个点。 这里面是有三阶公式的,写在了LoveTypeEvaluator里执行,最后用ofObject来完成动画,这里贴一下 LoveTypeEvaluator 的代码。LoveTypeEvaluator 其实就是一个求值程序! 内部有一个 t ,会在0-1之间变化。再通过三阶贝赛尔的公式,求出某个时段的路径坐标! 就跟属性动画的变化其实没区别,只是属性动画就跟一个值有关,可能直接用,这里是跟4个值有关。所以需要用求值程序来求值。
返回的 point 就是t时间的路径坐标。
当然了,整个动画执行完后,需要remove掉view,这里就不多说了,第二张贴图就有这个代码。