| |
| package com.xxmassdeveloper.mpchartexample; |
| |
| import android.graphics.Color; |
| import android.os.Bundle; |
| import android.view.WindowManager; |
| import android.widget.SeekBar; |
| import android.widget.SeekBar.OnSeekBarChangeListener; |
| import android.widget.TextView; |
| |
| import com.github.mikephil.charting.charts.LineChart; |
| import com.github.mikephil.charting.components.Legend; |
| import com.github.mikephil.charting.data.Entry; |
| import com.github.mikephil.charting.data.LineData; |
| import com.github.mikephil.charting.data.LineDataSet; |
| import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase; |
| |
| import java.util.ArrayList; |
| |
| public class PerformanceLineChart extends DemoBase implements OnSeekBarChangeListener { |
| |
| private LineChart mChart; |
| private SeekBar mSeekBarValues; |
| private TextView mTvCount; |
| |
| @Override |
| protected void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, |
| WindowManager.LayoutParams.FLAG_FULLSCREEN); |
| setContentView(R.layout.activity_performance_linechart); |
| |
| mTvCount = (TextView) findViewById(R.id.tvValueCount); |
| mSeekBarValues = (SeekBar) findViewById(R.id.seekbarValues); |
| mTvCount.setText("500"); |
| |
| mSeekBarValues.setProgress(500); |
| |
| mSeekBarValues.setOnSeekBarChangeListener(this); |
| |
| mChart = (LineChart) findViewById(R.id.chart1); |
| mChart.setDrawGridBackground(false); |
| |
| // no description text |
| mChart.getDescription().setEnabled(false); |
| mChart.setNoDataTextDescription("You need to provide data for the chart."); |
| |
| // enable touch gestures |
| mChart.setTouchEnabled(true); |
| |
| // enable scaling and dragging |
| mChart.setDragEnabled(true); |
| mChart.setScaleEnabled(true); |
| |
| // if disabled, scaling can be done on x- and y-axis separately |
| mChart.setPinchZoom(false); |
| |
| mChart.getAxisLeft().setDrawGridLines(false); |
| mChart.getAxisRight().setEnabled(false); |
| mChart.getXAxis().setDrawGridLines(true); |
| mChart.getXAxis().setDrawAxisLine(false); |
| |
| // dont forget to refresh the drawing |
| mChart.invalidate(); |
| } |
| |
| @Override |
| public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { |
| |
| int count = mSeekBarValues.getProgress() + 1000; |
| mTvCount.setText("" + count); |
| |
| mChart.resetTracking(); |
| |
| setData(count, 500f); |
| |
| // redraw |
| mChart.invalidate(); |
| } |
| |
| @Override |
| public void onStartTrackingTouch(SeekBar seekBar) { |
| // TODO Auto-generated method stub |
| |
| } |
| |
| @Override |
| public void onStopTrackingTouch(SeekBar seekBar) { |
| // TODO Auto-generated method stub |
| |
| } |
| |
| private void setData(int count, float range) { |
| |
| ArrayList<Entry> yVals = new ArrayList<Entry>(); |
| |
| for (int i = 0; i < count; i++) { |
| float mult = (range + 1); |
| float val = (float) (Math.random() * mult) + 3;// + (float) |
| // ((mult * |
| // 0.1) / 10); |
| yVals.add(new Entry(i * 0.001f, val)); |
| } |
| |
| // create a dataset and give it a type |
| LineDataSet set1 = new LineDataSet(yVals, "DataSet 1"); |
| |
| set1.setColor(Color.BLACK); |
| set1.setLineWidth(0.5f); |
| set1.setDrawValues(false); |
| set1.setDrawCircles(false); |
| set1.setMode(LineDataSet.Mode.LINEAR); |
| set1.setDrawFilled(false); |
| |
| // create a data object with the datasets |
| LineData data = new LineData(set1); |
| |
| // set data |
| mChart.setData(data); |
| |
| // get the legend (only possible after setting data) |
| Legend l = mChart.getLegend(); |
| l.setEnabled(false); |
| } |
| } |