• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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