question: 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 ( ) ) ; }
target:  Method that prepares the animation. Defines starting points, targets,  distance, yadda, as well as the first set of points to be drawn.