package com.github.jdsjlzx.progressindicator.indicators;
import android.animation.Animator;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
import java.util.List;
/**
* Created by Jack on 2015/10/15.
*/
public abstract class BaseIndicatorController {
private View mTarget;
private List<Animator> mAnimators;
public void setTarget(View target){
this.mTarget=target;
}
public View getTarget(){
return mTarget;
}
public int getWidth(){
return mTarget.getWidth();
}
public int getHeight(){
return mTarget.getHeight();
}
public void postInvalidate(){
mTarget.postInvalidate();
}
/**
* draw indicator
* @param canvas
* @param paint
*/
public abstract void draw(Canvas canvas,Paint paint);
/**
* create animation or animations
*/
public abstract List<Animator> createAnimation();
public void initAnimation(){
mAnimators=createAnimation();
}
/**
* make animation to start or end when target
* view was be Visible or Gone or Invisible.
* make animation to cancel when target view
* be onDetachedFromWindow.
* @param animStatus
*/
public void setAnimationStatus(AnimStatus animStatus){
if (mAnimators==null){
return;
}
int count=mAnimators.size();
for (int i = 0; i < count; i++) {
Animator animator=mAnimators.get(i);
boolean isRunning=animator.isRunning();
switch (animStatus){
case START:
if (!isRunning){
animator.start();
}
break;
case END:
if (isRunning){
animator.end();
}
break;
case CANCEL:
if (isRunning){
animator.cancel();
}
break;
}
}
}
public enum AnimStatus{
START,END,CANCEL
}
}