看这篇文章之前先看https://blog.csdn.net/zhaihaohao1/article/details/80941009
开始讲:
效果图:
实现思路如下
1先创建一个估值器:
package com.zhh.myapplication.test1;
import android.animation.TypeEvaluator;
import android.graphics.Point;
import com.orhanobut.logger.Logger;
/**
* Created by 16838 on 2018/7/5.
* 就是告诉动画系统如何从初始值过度到结束值
* 产生动画平滑滑动的值
* 从开始到结束的所有坐标值
* 保存在Point
*
* 估值器
*/
public class MyTypeEvaluator implements TypeEvaluator {
/**
* fraction动画的完成度
* startValue动画的初始值
* endValue动画的结束值
* @param fraction
* @param startValue
* @param endValue
* @return
*/
@Override
public Object evaluate(float fraction, Object startValue, Object endValue) {
Point startPoint = (Point) startValue;
Point endPoint = (Point) endValue;
// 直线公式
float mX = startPoint.x + fraction * (endPoint.x - startPoint.x);
float mY = startPoint.y + fraction * (endPoint.y - startPoint.y);
Point point = new Point((int)mX, (int)mY);
// 这里会产生从开始画滑动到结束的所有坐标
return point;
}
}
2自定义控件结合动画绘制
package com.zhh.myapplication.test1;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.view.View;