package com.classic.car.ui.chart; import android.content.Context; import com.classic.car.R; import com.classic.car.entity.ConsumerDetail; import com.classic.car.ui.activity.ChartActivity; import com.classic.car.utils.Util; import com.github.mikephil.charting.charts.Chart; import com.github.mikephil.charting.data.ChartData; abstract class BaseChartDisplayImpl<C extends Chart, T> implements IChartDisplay<C, T, ConsumerDetail> { Context mAppContext; int mTextSize; int mAxisSize; @Override public void init(C chart, boolean touchEnable) { if (null == chart) { return; } mAppContext = chart.getContext().getApplicationContext(); boolean isBigChart = chart.getContext() instanceof ChartActivity; mTextSize = isBigChart ? LARGE_TEXT_SIZE : TEXT_SIZE; mAxisSize = isBigChart ? LARGE_AXIS_SIZE : TEXT_SIZE; chart.setNoDataText(Util.getString(mAppContext, R.string.no_data_hint)); chart.getDescription().setEnabled(false); chart.setTouchEnabled(touchEnable); } @Override public void display(C chart, T t) { animationDisplay(chart, t, 0); } @Override public void animationDisplay(C chart, T t, int duration) { if (null == chart) { return; } ChartData data; if (null == t || (data = getChartData(t)) == null) { chart.clear(); return; } //noinspection unchecked chart.setData(data); if (duration > 0) { chart.animateXY(duration, duration); } } abstract ChartData getChartData(T t); }