package com.xxmassdeveloper.mpchartexample; import android.graphics.Typeface; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.WindowManager; import com.github.mikephil.charting.charts.Chart; import com.github.mikephil.charting.charts.LineChart; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.components.YAxis; import com.github.mikephil.charting.data.DataSet; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; import com.github.mikephil.charting.highlight.Highlight; import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; import com.github.mikephil.charting.listener.OnChartValueSelectedListener; import com.github.mikephil.charting.listener.OnDrawListener; import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase; import java.util.ArrayList; import java.util.List; /** * This Activity demonstrates drawing into the Chart with the finger. Both line, * bar and scatter charts can be used for drawing. * * @author Philipp Jahoda */ public class DrawChartActivity extends DemoBase implements OnChartValueSelectedListener, OnDrawListener { private LineChart mChart; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_draw_chart); mChart = (LineChart) findViewById(R.id.chart1); // listener for selecting and drawing mChart.setOnChartValueSelectedListener(this); mChart.setOnDrawListener(this); // if disabled, drawn datasets with the finger will not be automatically // finished // mChart.setAutoFinish(true); mChart.setDrawGridBackground(false); // add dummy-data to the chart initWithDummyData(); Typeface tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf"); XAxis xl = mChart.getXAxis(); xl.setTypeface(tf); xl.setAvoidFirstLastClipping(true); YAxis yl = mChart.getAxisLeft(); yl.setTypeface(tf); mChart.getLegend().setEnabled(false); // mChart.setYRange(-40f, 40f, true); // call this to reset the changed y-range // mChart.resetYRange(true); } private void initWithDummyData() { ArrayList<Entry> yVals = new ArrayList<Entry>(); // create a dataset and give it a type (0) LineDataSet set1 = new LineDataSet(yVals, "DataSet"); set1.setLineWidth(3f); set1.setCircleRadius(5f); // create a data object with the datasets LineData data = new LineData(set1); mChart.setData(data); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.draw, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.actionToggleValues: { List<ILineDataSet> sets = mChart.getData() .getDataSets(); for (ILineDataSet iSet : sets) { LineDataSet set = (LineDataSet) iSet; set.setDrawValues(!set.isDrawValuesEnabled()); } mChart.invalidate(); break; } case R.id.actionToggleHighlight: { if(mChart.getData() != null) { mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled()); mChart.invalidate(); } break; } case R.id.actionTogglePinch: { if (mChart.isPinchZoomEnabled()) mChart.setPinchZoom(false); else mChart.setPinchZoom(true); mChart.invalidate(); break; } case R.id.actionToggleAutoScaleMinMax: { mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled()); mChart.notifyDataSetChanged(); break; } case R.id.actionSave: { // mChart.saveToGallery("title"+System.currentTimeMillis()); mChart.saveToPath("title" + System.currentTimeMillis(), ""); break; } } return true; } @Override public void onValueSelected(Entry e, Highlight h) { Log.i("VAL SELECTED", "Value: " + e.getY() + ", xIndex: " + e.getX() + ", DataSet index: " + h.getDataSetIndex()); } @Override public void onNothingSelected() { } /** callback for each new entry drawn with the finger */ @Override public void onEntryAdded(Entry entry) { Log.i(Chart.LOG_TAG, entry.toString()); } /** callback when a DataSet has been drawn (when lifting the finger) */ @Override public void onDrawFinished(DataSet<?> dataSet) { Log.i(Chart.LOG_TAG, "DataSet drawn. " + dataSet.toSimpleString()); // prepare the legend again mChart.getLegendRenderer().computeLegend(mChart.getData()); } @Override public void onEntryMoved(Entry entry) { Log.i(Chart.LOG_TAG, "Point moved " + entry.toString()); } }