package com.github.mikephil.charting.jobs;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.view.View;
import com.github.mikephil.charting.utils.Transformer;
import com.github.mikephil.charting.utils.ViewPortHandler;
/**
* Created by Philipp Jahoda on 19/02/16.
*/
@SuppressLint("NewApi")
public abstract class AnimatedViewPortJob extends ViewPortJob implements ValueAnimator.AnimatorUpdateListener, Animator.AnimatorListener {
protected ObjectAnimator animator;
protected float phase;
protected float xOrigin;
protected float yOrigin;
public AnimatedViewPortJob(ViewPortHandler viewPortHandler, float xValue, float yValue, Transformer trans, View v, float xOrigin, float yOrigin, long duration) {
super(viewPortHandler, xValue, yValue, trans, v);
this.xOrigin = xOrigin;
this.yOrigin = yOrigin;
animator = ObjectAnimator.ofFloat(this, "phase", 0f, 1f);
animator.setDuration(duration);
animator.addUpdateListener(this);
animator.addListener(this);
}
@SuppressLint("NewApi")
@Override
public void run() {
animator.start();
}
public float getPhase() {
return phase;
}
public void setPhase(float phase) {
this.phase = phase;
}
public float getXOrigin() {
return xOrigin;
}
public float getYOrigin() {
return yOrigin;
}
public abstract void recycleSelf();
protected void resetAnimator(){
animator.removeAllListeners();
animator.removeAllUpdateListeners();
animator.reverse();
animator.addUpdateListener(this);
animator.addListener(this);
}
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
try{
recycleSelf();
}catch (IllegalArgumentException e){
// don't worry about it.
}
}
@Override
public void onAnimationCancel(Animator animation) {
try{
recycleSelf();
}catch (IllegalArgumentException e){
// don't worry about it.
}
}
@Override
public void onAnimationRepeat(Animator animation) {
}
@Override
public void onAnimationUpdate(ValueAnimator animation) {
}
}