package com.num.ui.viewgenerator;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import com.num.models.GraphData;
import com.num.models.GraphPoint;
import com.num.models.Model;
import com.num.models.Row;
import com.num.R;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
public class GraphViewGenerator extends ViewGenerator {
ViewHolder holder;
private XYMultipleSeriesDataset dataset;
private XYMultipleSeriesRenderer renderer;
private XYSeries mCurrentSeries;
private XYSeriesRenderer mCurrentRenderer;
private GraphicalView mChartView;
private int index = 0;
private XYSeries xy;
private GraphData data;
public GraphViewGenerator(GraphData data) {
super(R.layout.cell_view_graph);
holder = new ViewHolder();
this.data = data;
}
@Override
public ViewHolder fillViewHolder(View view, LayoutInflater inflater) {
holder.linear = (LinearLayout) view.findViewById(R.id.chart);
return holder;
}
@Override
public void populateView(Row item, Context context, View view) {
createGraph(context);
updateGraph(context);
}
private void updateGraph(Context context) {
renderer.setXAxisMax(data.getPoints().size() - 1);
int count = 0;
for (GraphPoint point : data.getPoints()) {
xy.add(count++, point.y);
}
mChartView.repaint();
}
private void createGraph(Context context) {
renderer = new XYMultipleSeriesRenderer();
xy = new XYSeries("");
renderer.setMargins(new int[] { 0, 20, -30, 0 });
renderer.setYAxisMax(data.getyMax() * 1.2);
renderer.setXAxisMin(0.0);
renderer.setYAxisMin(0.0);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(context.getResources().getColor(
R.color.black));
renderer.setMarginsColor(context.getResources().getColor(R.color.black));
renderer.setGridColor(context.getResources()
.getColor(R.color.dark_blue));
renderer.setLabelsTextSize(14);
renderer.setPointSize(0);
dataset = new XYMultipleSeriesDataset();
dataset.addSeries(xy);
mCurrentSeries = xy;
XYSeriesRenderer seriesrenderer = new XYSeriesRenderer();
renderer.addSeriesRenderer(seriesrenderer);
seriesrenderer.setPointStyle(PointStyle.CIRCLE);
seriesrenderer.setFillPoints(true);
seriesrenderer.setChartValuesSpacing(2);
seriesrenderer.setFillBelowLine(true);
seriesrenderer.setColor(context.getResources().getColor(
R.color.light_blue));
seriesrenderer.setFillBelowLineColor(context.getResources().getColor(
R.color.mid_blue));
seriesrenderer.setLineWidth(2);
// mChartView = ChartFactory.getBarChartView(context, dataset, renderer,
// org.achartengine.chart.BarChart.Type.DEFAULT);
// mChartView = ChartFactory.getLineChartView(context, dataset,
// renderer);
mChartView = ChartFactory.getCubeLineChartView(context, dataset,
renderer, 0);
renderer.setAxesColor(context.getResources()
.getColor(R.color.dark_blue));
renderer.setPanEnabled(false, false);
renderer.setZoomEnabled(false, false);
renderer.setChartTitle(data.getxAxisTitle());
renderer.setChartTitleTextSize(20);
renderer.setTextTypeface("Bold", Typeface.NORMAL);
// renderer.setChartValuesTextSize(//arg0)
renderer.setClickEnabled(false);
renderer.setShowGridX(true);
renderer.setInScroll(true);
renderer.setSelectableBuffer(100);
holder.linear.addView(mChartView, new LayoutParams(
LayoutParams.FILL_PARENT, 250));
}
}