Is there any way to draw graphs and charts in Android?

I am new Java and new to Android. I am trying to write an Android application that displays data from a user based on a date. Is there a way to do this in Java without using JavaScript (which I don't know)?

+6
java android charts graphing
source share
1 answer

Try entering the code

GraphActivity Class

package com.graph; import android.app.Activity; import android.os.Bundle; public class GraphActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); float[] values = new float[] { 2.0f,1.5f, 2.5f, 1.0f , 3.0f }; String[] verlabels = new String[] { "great", "ok", "bad" }; String[] horlabels = new String[] { "today", "tomorrow", "next week", "next month" }; GraphView graphView = new GraphView(this, values, "GraphViewDemo",horlabels, verlabels, GraphView.LINE); setContentView(graphView); } } 

GraphView class

 package com.graph; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Align; import android.view.View; public class GraphView extends View { public static boolean BAR = true; public static boolean LINE = false; private Paint paint; private float[] values; private String[] horlabels; private String[] verlabels; private String title; private boolean type; public GraphView(Context context, float[] values, String title, String[] horlabels, String[] verlabels, boolean type) { super(context); if (values == null) values = new float[0]; else this.values = values; if (title == null) title = ""; else this.title = title; if (horlabels == null) this.horlabels = new String[0]; else this.horlabels = horlabels; if (verlabels == null) this.verlabels = new String[0]; else this.verlabels = verlabels; this.type = type; paint = new Paint(); } @Override protected void onDraw(Canvas canvas) { float border = 20; float horstart = border * 2; float height = getHeight(); float width = getWidth() - 1; float max = getMax(); float min = getMin(); float diff = max - min; float graphheight = height - (2 * border); float graphwidth = width - (2 * border); paint.setTextAlign(Align.LEFT); int vers = verlabels.length - 1; for (int i = 0; i < verlabels.length; i++) { paint.setColor(Color.DKGRAY); float y = ((graphheight / vers) * i) + border; canvas.drawLine(horstart, y, width, y, paint); paint.setColor(Color.WHITE); canvas.drawText(verlabels[i], 0, y, paint); } int hors = horlabels.length - 1; for (int i = 0; i < horlabels.length; i++) { paint.setColor(Color.DKGRAY); float x = ((graphwidth / hors) * i) + horstart; canvas.drawLine(x, height - border, x, border, paint); paint.setTextAlign(Align.CENTER); if (i==horlabels.length-1) paint.setTextAlign(Align.RIGHT); if (i==0) paint.setTextAlign(Align.LEFT); paint.setColor(Color.WHITE); canvas.drawText(horlabels[i], x, height - 4, paint); } paint.setTextAlign(Align.CENTER); canvas.drawText(title, (graphwidth / 2) + horstart, border - 4, paint); if (max != min) { paint.setColor(Color.LTGRAY); if (type == BAR) { float datalength = values.length; float colwidth = (width - (2 * border)) / datalength; for (int i = 0; i < values.length; i++) { float val = values[i] - min; float rat = val / diff; float h = graphheight * rat; canvas.drawRect((i * colwidth) + horstart, (border - h) + graphheight, ((i * colwidth) + horstart) + (colwidth - 1), height - (border - 1), paint); } } else { float datalength = values.length; float colwidth = (width - (2 * border)) / datalength; float halfcol = colwidth / 2; float lasth = 0; for (int i = 0; i < values.length; i++) { float val = values[i] - min; float rat = val / diff; float h = graphheight * rat; if (i > 0) canvas.drawLine(((i - 1) * colwidth) + (horstart + 1) + halfcol, (border - lasth) + graphheight, (i * colwidth) + (horstart + 1) + halfcol, (border - h) + graphheight, paint); lasth = h; } } } } private float getMax() { float largest = Integer.MIN_VALUE; for (int i = 0; i < values.length; i++) if (values[i] > largest) largest = values[i]; return largest; } private float getMin() { float smallest = Integer.MAX_VALUE; for (int i = 0; i < values.length; i++) if (values[i] < smallest) smallest = values[i]; return smallest; } } 
+8
source share

All Articles