Buggy code:
public class LineChartActivity1 extends DemoBase implements OnSeekBarChangeListener , OnChartGestureListener , OnChartValueSelectedListener { private LineChart mChart ; private SeekBar mSeekBarX ; private SeekBar mSeekBarY ; private TextView tvX ; private TextView tvY ; @ Override protected void onCreate ( Bundle savedInstanceState ) { } @ Override public void onWindowFocusChanged ( boolean hasFocus ) { } @ Override public boolean onCreateOptionsMenu ( Menu menu ) { } @ Override public boolean onOptionsItemSelected ( MenuItem item ) { switch ( item . getItemId ( ) ) { case id . actionToggleValues : { for ( DataSet < ? > set : mChart . getData ( ) . getDataSets ( ) ) set . setDrawValues ( ( ! ( set . isDrawValuesEnabled ( ) ) ) ) ; mChart . invalidate ( ) ; break ; } case id . actionToggleHighlight : { if ( mChart . isHighlightEnabled ( ) ) mChart . setHighlightEnabled ( false ) ; else mChart . setHighlightEnabled ( true ) ; mChart . invalidate ( ) ; break ; } case id . actionToggleFilled : { ArrayList < LineDataSet > sets = ( ( ArrayList < LineDataSet > ) ( mChart . getData ( ) . getDataSets ( ) ) ) ; for ( LineDataSet set : sets ) { if ( set . isDrawFilledEnabled ( ) ) set . setDrawFilled ( false ) ; else set . setDrawFilled ( true ) ; } mChart . invalidate ( ) ; break ; } case id . actionToggleCircles : { ArrayList < LineDataSet > sets = ( ( ArrayList < LineDataSet > ) ( mChart . getData ( ) . getDataSets ( ) ) ) ; for ( LineDataSet set : sets ) { if ( set . isDrawCirclesEnabled ( ) ) set . setDrawCircles ( false ) ; else set . setDrawCircles ( true ) ; } mChart . invalidate ( ) ; break ; } case id . actionToggleCubic : { ArrayList < LineDataSet > sets = ( ( ArrayList < LineDataSet > ) ( mChart . getData ( ) . getDataSets ( ) ) ) ; for ( LineDataSet set : sets ) { if ( set . isDrawCubicEnabled ( ) ) set . setDrawCubic ( false ) ; else set . setDrawCubic ( true ) ; } mChart . invalidate ( ) ; break ; } case id . actionToggleStartzero : { mChart . getAxisLeft ( ) . setStartAtZero ( ( ! ( mChart . getAxisLeft ( ) . isStartAtZeroEnabled ( ) ) ) ) ; mChart . getAxisRight ( ) . setStartAtZero ( ( ! ( mChart . getAxisRight ( ) . isStartAtZeroEnabled ( ) ) ) ) ; mChart . invalidate ( ) ; break ; } case id . actionTogglePinch : { if ( mChart . isPinchZoomEnabled ( ) ) mChart . setPinchZoom ( false ) ; else mChart . setPinchZoom ( true ) ; mChart . invalidate ( ) ; break ; } case id . animateX : { mChart . animateX ( 3000 ) ; break ; } case id . animateY : { <START_BUG> mChart . animateY ( 3000 ) ; <END_BUG> break ; } case id . animateXY : { mChart . animateXY ( 3000 , 3000 ) ; break ; } case id . actionToggleAdjustXLegend : { XAxis xLabels = mChart . getXAxis ( ) ; if ( xLabels . isAdjustXLabelsEnabled ( ) ) xLabels . setAdjustXLabels ( false ) ; else xLabels . setAdjustXLabels ( true ) ; mChart . invalidate ( ) ; break ; } case id . actionToggleFilter : { Approximator a = new Approximator ( ApproximatorType . DOUGLAS_PEUCKER , 35 ) ; if ( ! ( mChart . isFilteringEnabled ( ) ) ) { mChart . enableFiltering ( a ) ; } else { mChart . disableFiltering ( ) ; } mChart . invalidate ( ) ; break ; } case id . actionSave : { if ( mChart . saveToPath ( ( "title" + ( System . currentTimeMillis ( ) ) ) , "" ) ) { Toast . makeText ( getApplicationContext ( ) , "Saving<seq2seq4repair_space>SUCCESSFUL!" , LENGTH_SHORT ) . show ( ) ; } else Toast . makeText ( getApplicationContext ( ) , "Saving<seq2seq4repair_space>FAILED!" , LENGTH_SHORT ) . show ( ) ; break ; } } return true ; } @ Override public void onProgressChanged ( SeekBar seekBar , int progress , boolean fromUser ) { } @ Override public void onStartTrackingTouch ( SeekBar seekBar ) { } @ Override public void onStopTrackingTouch ( SeekBar seekBar ) { } private void setData ( int count , float range ) { } @ Override public void onChartLongPressed ( MotionEvent me ) { } @ Override public void onChartDoubleTapped ( MotionEvent me ) { } @ Override public void onChartSingleTapped ( MotionEvent me ) { } @ Override public void onChartFling ( MotionEvent me1 , MotionEvent me2 , float velocityX , float velocityY ) { } @ Override public void onChartScale ( MotionEvent me , float scaleX , float scaleY ) { } @ Override public void onValueSelected ( Entry e , int dataSetIndex , Highlight h ) { } @ Override public void onNothingSelected ( ) { } }

Fix:
mChart . animateY ( 3000 , EaseInCubic ) ;