视频直播中的心形漂浮效果

实现效果:

这里写图片描述

思路:

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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值