实现效果:
思路:
1.首先要给心形图片创建一个平滑的悬浮路径,那就要用到贝塞尔曲线,这里采用自定义TypeEvaluator实现。
2.路径有了,就要考虑实现动画的两个步骤
a.缩放,伴随透明度变化
b.底部悬浮到顶部
这里是用的是Matrix
3.自定义View,然后绘制心形图片。
详细步骤,看源码
代码:
1.自定义BezierEvaluator
package com.test.paintdemo.loveflyover;
import android.animation.TypeEvaluator;
import android.graphics.PointF;
/**
* Created by ygdx_lk on 17/6/26.
*/
public class BezierEvaluator implements TypeEvaluator<PointF> {
private final PointF p0, p3;
public BezierEvaluator(PointF point0, PointF point3){
this.p0 = point0;
this.p3 = point3;
}
@Override
public PointF evaluate(float t, PointF p1, PointF p2) {
//贝塞尔曲线的三次方公式
PointF pointF = new PointF();
pointF.x = (float) (p0.x * Math.pow((1 - t), 3) + 3 * p1.x * t * Math.pow((1 - t), 2) + 3 * p2.x * Math.pow(t, 2) * (1 - t) + p3.x * Math.pow(t, 3));
pointF.y = (float) (p0.y * Math.pow((1 - t), 3) + 3 * p1.y * t * Math.pow((1 - t), 2) + 3 * p2.y * Math.pow(t, 2) * (1 - t) + p3.y * Math.pow(t, 3))