/
NikolayIvkin
/
MPAndroidChart1
Обзор
Документация
Войти
/
NikolayIvkin
/
MPAndroidChart1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
MPChartLib/src/main/java/com/github/mikephil/charting/jobs/AnimatedZoomJob.java
119 строк
4 KB
Stephen McBride
Fix for missing setters in getInstance method
28 фев 2017, 05:58
28 фев 2017, 05:58
6c54f0b
Код
Авторство
О чём код?
package com.github.mikephil.charting.jobs; import android.animation.Animator; import android.animation.ValueAnimator; import android.annotation.SuppressLint; import android.graphics.Matrix; import android.view.View; import com.github.mikephil.charting.charts.BarLineChartBase; import com.github.mikephil.charting.components.YAxis; import com.github.mikephil.charting.utils.ObjectPool; 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 class AnimatedZoomJob extends AnimatedViewPortJob implements Animator.AnimatorListener { private static ObjectPool<AnimatedZoomJob> pool; static { pool = ObjectPool.create(8, new AnimatedZoomJob(null,null,null,null,0,0,0,0,0,0,0,0,0,0)); } public static AnimatedZoomJob getInstance(ViewPortHandler viewPortHandler, View v, Transformer trans, YAxis axis, float xAxisRange, float scaleX, float scaleY, float xOrigin, float yOrigin, float zoomCenterX, float zoomCenterY, float zoomOriginX, float zoomOriginY, long duration) { AnimatedZoomJob result = pool.get(); result.mViewPortHandler = viewPortHandler; result.xValue = scaleX; result.yValue = scaleY; result.mTrans = trans; result.view = v; result.xOrigin = xOrigin; result.yOrigin = yOrigin; result.yAxis = axis; result.xAxisRange = xAxisRange; result.resetAnimator(); result.animator.setDuration(duration); return result; } protected float zoomOriginX; protected float zoomOriginY; protected float zoomCenterX; protected float zoomCenterY; protected YAxis yAxis; protected float xAxisRange; @SuppressLint("NewApi") public AnimatedZoomJob(ViewPortHandler viewPortHandler, View v, Transformer trans, YAxis axis, float xAxisRange, float scaleX, float scaleY, float xOrigin, float yOrigin, float zoomCenterX, float zoomCenterY, float zoomOriginX, float zoomOriginY, long duration) { super(viewPortHandler, scaleX, scaleY, trans, v, xOrigin, yOrigin, duration); this.zoomCenterX = zoomCenterX; this.zoomCenterY = zoomCenterY; this.zoomOriginX = zoomOriginX; this.zoomOriginY = zoomOriginY; this.animator.addListener(this); this.yAxis = axis; this.xAxisRange = xAxisRange; } protected Matrix mOnAnimationUpdateMatrixBuffer = new Matrix(); @Override public void onAnimationUpdate(ValueAnimator animation) { float scaleX = xOrigin + (xValue - xOrigin) * phase; float scaleY = yOrigin + (yValue - yOrigin) * phase; Matrix save = mOnAnimationUpdateMatrixBuffer; mViewPortHandler.setZoom(scaleX, scaleY, save); mViewPortHandler.refresh(save, view, false); float valsInView = yAxis.mAxisRange / mViewPortHandler.getScaleY(); float xsInView = xAxisRange / mViewPortHandler.getScaleX(); pts[0] = zoomOriginX + ((zoomCenterX - xsInView / 2f) - zoomOriginX) * phase; pts[1] = zoomOriginY + ((zoomCenterY + valsInView / 2f) - zoomOriginY) * phase; mTrans.pointValuesToPixel(pts); mViewPortHandler.translate(pts, save); mViewPortHandler.refresh(save, view, true); } @Override public void onAnimationEnd(Animator animation) { ((BarLineChartBase) view).calculateOffsets(); view.postInvalidate(); } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } @Override public void recycleSelf() { } @Override public void onAnimationStart(Animator animation) { } @Override protected ObjectPool.Poolable instantiate() { return new AnimatedZoomJob(null,null,null,null,0,0,0,0,0,0,0,0,0,0); } }