Ich bin neu in der Android App-Produktion. Ich habe es geschafft, durch Text- und Websuche etwas greifbares zu machen, aber ich suche immer nach Code, der hilfreich zu sein scheint, weil ich die Grundlagen des Denkens nicht verstehen kann. Dieses Mal habe ich mich mit der Datenbank verbunden und mit diesen Daten zwei Diagramme mit unterbrochenen Linien erstellt, aber es fiel mir schwer, die Beschreibung der zweiten Zeile nicht zu kennen, daher möchte ich sie hier schreiben.
Money Forward Engineer Blog (Android: Ausdrucksstark mit Grafikanzeige. Verwenden wir MPAndroidChart!) Nyans App-Entwicklung (Zeichnen von Grafiken mit [Android] MPAndroidChart-Bibliothek) ← Dies ist ein Blog mit vielen Artikeln. Vielen Dank für Ihre Hilfe.
Windows10 AndroidStudio4
Die Einführung und das Layout von MPAndroidChart finden Sie auf der Referenzseite. Ich habe auch einige der Methoden auskommentiert, die ich nicht verwendet habe.
LineChartActivity.java
LineChart mChart = findViewById(R.id.lineChart);
//Gibt an, ob der Diagrammbeschreibungstext angezeigt werden soll
mChart.getDescription().setEnabled(true);
//Grafikbeschreibungstext (App-Name usw.)
mChart.getDescription().setText(getResources().getString(R.string.app_name));
//Diagrammbeschreibung Einstellung der Textfarbe
//mChart.getDescription().setTextColor(Color.BLACK);
//Diagrammbeschreibung Einstellung der Textgröße
//mChart.getDescription().setTextSize(10f);
//Anzeige der Positionseinstellung des Grafikbeschreibungstextes
//mChart.getDescription().setPosition(0, 0);
//Hintergrundfarbe des Graphen
mChart.setBackgroundColor(Color.WHITE);
//x-Achseneinstellung
XAxis xAxis = mChart.getXAxis();
//Ausgabe der x-Achse diagonal
xAxis.setLabelRotationAngle(45);
//Maximalwert der x-Achse Minimalwert
//0 wenn~9. wird ausgegeben(10 Stück)Wenn Sie es nicht schreiben, werden die registrierten Daten angezeigt.
xAxis.setAxisMinimum(0f);
xAxis.setAxisMaximum(9f);
//Stellen Sie das in der Datenbank registrierte Datum auf die x-Achse ein
xAxis.setValueFormatter(new IndexAxisValueFormatter(getDate()));
//Machen Sie die x-Achse zu einer gestrichelten Linie(Dashed Line)
xAxis.enableGridDashedLine(10f, 10f, 0f);
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//Einstellung der y-Achse
YAxis yAxis = mChart.getAxisLeft();
//Maximale / minimale Einstellung der Y-Achse
yAxis.setAxisMaximum(150f);
yAxis.setAxisMinimum(50f);
//Machen Sie die y-Achse zu einer gestrichelten Linie
yAxis.enableGridDashedLine(10f, 10f, 0f);
yAxis.setDrawZeroLine(true);
//Die Skala rechts. Falsch, wenn nicht benötigt
mChart.getAxisRight().setEnabled(false);
GetDate-Methode für die Einstellung der x-Achse.
Ich musste die Art der in der Datenbank registrierten Daten ändern.
Es scheint, dass ich klüger schreiben kann, aber für mich ist es das jetzt.
Das variable Datum ist eine ArrayList
LineChartActivity.java
//SimpleDateFormat durch Umschreiben der im String-Typ gespeicherten Daten auf den Datumstyp
private ArrayList<String> getDate() {
ArrayList<String> dateLabels = new ArrayList<>();
for (int i = 0; i < date.size(); i++) {
try {
//Korrigieren Sie das Datum bis heute
String strDate = date.get(i);
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date entryDate = dateFormat.parse(strDate);
DateFormat dt = new SimpleDateFormat("MM/dd");
String setDate = dt.format(entryDate);
dateLabels.add(setDate);
} catch (ParseException e) {
e.printStackTrace();
}
}
return dateLabels;
}
Die Variablen valuesMax und valuesMin sind ArrayList
LineChartActivity.java
ArrayList<Entry> valuesMax = new ArrayList<>();
ArrayList<Entry> valuesMin = new ArrayList<>();
LineDataSet max; //Zeilenargument
LineDataSet min;
//Linieneinstellungsmethode
max = new LineDataSet(valuesMax, "A");//Markenname
max.setColor(Color.RED); //Linienfarbe
max.setCircleColor(Color.RED); //Koordinatenfarbe
max.setLineWidth(5f); //Liniendicke 1f~
max.setCircleRadius(5f); //Koordinatengröße
max.setDrawCircleHole(false); //Koordinaten füllen → falsch Nicht füllen → wahr
max.setValueTextSize(10f); //Schreiben Sie den Wert der Daten. Nicht bei 0f aufgeführt. Da es sich um ein Float handelt, hat es einen Dezimalpunkt
max.setDrawFilled(true); //Ob unter der Zeile gefüllt werden soll
max.setFillColor(Color.RED); //Gefüllte Feldfarbe
//Machen Sie einen anderen Satz
min = new LineDataSet(valuesMin, "B");
min.setColor(Color.BLUE);
min.setCircleColor(Color.BLUE);
min.setLineWidth(5f);
min.setCircleHoleRadius(5f);
min.setDrawCircleHole(false);
min.setValueTextSize(10f);
min.setDrawFilled(true);
min.setFillColor(Color.BLUE);
//Setzen Sie eine Linie im Diagramm
ArrayList<ILineDataSet> dataSets = new ArrayList<>();
dataSets.add(max);
dataSets.add(min);
LineData lineData = new LineData(dataSets);
mChart.setData(lineData);
//Animieren Sie die Daten. Millisekunde.Größere Zahlen sind langsamer
mChart.animateX(1000);
Die Zeile, die Sie dem ILineDateSet hinzugefügt haben, wird auf dem Bildschirm angezeigt.
Es werden zwei Grafiken angezeigt. Ich habe die Füllung rot und blau gemacht, aber der untere Rand der blauen Linie ist gemischt und wird lila ◎ Ich bin froh, wenn Sie es als Referenz verwenden können.
Recommended Posts