private ArrayList<ChartSet> prepareAnimation(ChartView chartView,ArrayList<float[][]> start,ArrayList<float[][]> end){
  final int nSets=start.size();
  final int nEntries=start.get(0).length;
  mChartView=chartView;
  mCurrentDuration=new long[nEntries];
  if (mOrder == null) {
    mOrder=new int[nEntries];
    for (int i=0; i < mOrder.length; i++)     mOrder[i]=i;
  }
 else {
    if (mOrder.length != nEntries)     throw new IllegalArgumentException("Size of overlap order different than set's entries size.");
  }
  float noOverlapDuration=mGlobalDuration / nEntries;
  mDuration=(int)(noOverlapDuration + (mGlobalDuration - noOverlapDuration) * mOverlapingFactor);
  Path path;
  mPathMeasures=new PathMeasure[nSets][nEntries];
  for (int i=0; i < nSets; i++) {
    for (int j=0; j < nEntries; j++) {
      path=new Path();
      path.moveTo(start.get(i)[j][0],start.get(i)[j][1]);
      path.lineTo(end.get(i)[j][0],end.get(i)[j][1]);
      mPathMeasures[i][j]=new PathMeasure(path,false);
    }
  }
  mInitTime=new long[nEntries];
  mGlobalInitTime=System.currentTimeMillis();
  long noOverlapInitTime;
  for (int i=0; i < nEntries; i++) {
    noOverlapInitTime=mGlobalInitTime + (i * (mGlobalDuration / nEntries));
    mInitTime[mOrder[i]]=(noOverlapInitTime - ((long)(mOverlapingFactor * (noOverlapInitTime - mGlobalInitTime))));
  }
  mPlaying=true;
  return getUpdate(mChartView.getData());
}

private ArrayList < ChartSet > prepareAnimation ( ChartView chartView , ArrayList < float [ ] [ ] > start , ArrayList < float [ ] [ ] > end ) { final int nSets = start . size ( ) ; final int nEntries = start . get ( 0 ) . length ; mChartView = chartView ; mCurrentDuration = new long [ nEntries ] ; if ( mOrder == null ) { mOrder = new int [ nEntries ] ; for ( int i = 0 ; i < mOrder . length ; i ++ ) mOrder [ i ] = i ; } else { if ( mOrder . length != nEntries ) throw new IllegalArgumentException ( "Size of overlap order different than set's entries size." ) ; } float noOverlapDuration = mGlobalDuration / nEntries ; mDuration = ( int ) ( noOverlapDuration + ( mGlobalDuration - noOverlapDuration ) * mOverlapingFactor ) ; Path path ; mPathMeasures = new PathMeasure [ nSets ] [ nEntries ] ; for ( int i = 0 ; i < nSets ; i ++ ) { for ( int j = 0 ; j < nEntries ; j ++ ) { path = new Path ( ) ; path . moveTo ( start . get ( i ) [ j ] [ 0 ] , start . get ( i ) [ j ] [ 1 ] ) ; path . lineTo ( end . get ( i ) [ j ] [ 0 ] , end . get ( i ) [ j ] [ 1 ] ) ; mPathMeasures [ i ] [ j ] = new PathMeasure ( path , false ) ; } } mInitTime = new long [ nEntries ] ; mGlobalInitTime = System . currentTimeMillis ( ) ; long noOverlapInitTime ; for ( int i = 0 ; i < nEntries ; i ++ ) { noOverlapInitTime = mGlobalInitTime + ( i * ( mGlobalDuration / nEntries ) ) ; mInitTime [ mOrder [ i ] ] = ( noOverlapInitTime - ( ( long ) ( mOverlapingFactor * ( noOverlapInitTime - mGlobalInitTime ) ) ) ) ; } mPlaying = true ; return getUpdate ( mChartView . getData ( ) ) ; }
method that prepares the animation . defines starting points , targets , distance , yadda , as well as the first set of points to be drawn .
