1 2 package com.xxmassdeveloper.mpchartexample; 3 4 import android.content.Intent; 5 import android.graphics.Color; 6 import android.net.Uri; 7 import android.os.Bundle; 8 import android.view.Menu; 9 import android.view.MenuItem; 10 import android.view.WindowManager; 11 import android.widget.SeekBar; 12 import android.widget.SeekBar.OnSeekBarChangeListener; 13 import android.widget.TextView; 14 15 import com.github.mikephil.charting.charts.LineChart; 16 import com.github.mikephil.charting.components.Legend; 17 import com.github.mikephil.charting.data.Entry; 18 import com.github.mikephil.charting.data.LineData; 19 import com.github.mikephil.charting.data.LineDataSet; 20 import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase; 21 22 import java.util.ArrayList; 23 24 @SuppressWarnings("SameParameterValue") 25 public class PerformanceLineChart extends DemoBase implements OnSeekBarChangeListener { 26 27 private LineChart chart; 28 private SeekBar seekBarValues; 29 private TextView tvCount; 30 31 @Override onCreate(Bundle savedInstanceState)32 protected void onCreate(Bundle savedInstanceState) { 33 super.onCreate(savedInstanceState); 34 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 35 WindowManager.LayoutParams.FLAG_FULLSCREEN); 36 setContentView(R.layout.activity_performance_linechart); 37 38 setTitle("PerformanceLineChart"); 39 40 tvCount = findViewById(R.id.tvValueCount); 41 seekBarValues = findViewById(R.id.seekbarValues); 42 seekBarValues.setOnSeekBarChangeListener(this); 43 44 chart = findViewById(R.id.chart1); 45 chart.setDrawGridBackground(false); 46 47 // no description text 48 chart.getDescription().setEnabled(false); 49 50 // enable touch gestures 51 chart.setTouchEnabled(true); 52 53 // enable scaling and dragging 54 chart.setDragEnabled(true); 55 chart.setScaleEnabled(true); 56 57 // if disabled, scaling can be done on x- and y-axis separately 58 chart.setPinchZoom(false); 59 60 chart.getAxisLeft().setDrawGridLines(false); 61 chart.getAxisRight().setEnabled(false); 62 chart.getXAxis().setDrawGridLines(true); 63 chart.getXAxis().setDrawAxisLine(false); 64 65 seekBarValues.setProgress(9000); 66 67 // don't forget to refresh the drawing 68 chart.invalidate(); 69 } 70 setData(int count, float range)71 private void setData(int count, float range) { 72 73 ArrayList<Entry> values = new ArrayList<>(); 74 75 for (int i = 0; i < count; i++) { 76 float val = (float) (Math.random() * (range + 1)) + 3; 77 values.add(new Entry(i * 0.001f, val)); 78 } 79 80 // create a dataset and give it a type 81 LineDataSet set1 = new LineDataSet(values, "DataSet 1"); 82 83 set1.setColor(Color.BLACK); 84 set1.setLineWidth(0.5f); 85 set1.setDrawValues(false); 86 set1.setDrawCircles(false); 87 set1.setMode(LineDataSet.Mode.LINEAR); 88 set1.setDrawFilled(false); 89 90 // create a data object with the data sets 91 LineData data = new LineData(set1); 92 93 // set data 94 chart.setData(data); 95 96 // get the legend (only possible after setting data) 97 Legend l = chart.getLegend(); 98 l.setEnabled(false); 99 } 100 101 @Override onCreateOptionsMenu(Menu menu)102 public boolean onCreateOptionsMenu(Menu menu) { 103 getMenuInflater().inflate(R.menu.only_github, menu); 104 return true; 105 } 106 107 @Override onOptionsItemSelected(MenuItem item)108 public boolean onOptionsItemSelected(MenuItem item) { 109 110 switch (item.getItemId()) { 111 case R.id.viewGithub: { 112 Intent i = new Intent(Intent.ACTION_VIEW); 113 i.setData(Uri.parse("https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PerformanceLineChart.java")); 114 startActivity(i); 115 break; 116 } 117 } 118 119 return true; 120 } 121 122 @Override onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)123 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 124 125 int count = seekBarValues.getProgress() + 1000; 126 tvCount.setText(String.valueOf(count)); 127 128 chart.resetTracking(); 129 130 setData(count, 500f); 131 132 // redraw 133 chart.invalidate(); 134 } 135 136 @Override saveToGallery()137 public void saveToGallery() { /* Intentionally left empty */ } 138 139 @Override onStartTrackingTouch(SeekBar seekBar)140 public void onStartTrackingTouch(SeekBar seekBar) {} 141 142 @Override onStopTrackingTouch(SeekBar seekBar)143 public void onStopTrackingTouch(SeekBar seekBar) {} 144 } 145