blob: 2f9de9c58a78c0ba7577b4bd5b4275cceb820dc8 [file] [log] [blame]
package com.androidplot.demos;
import android.app.Activity;
import android.graphics.*;
import android.os.Bundle;
import android.view.View;
import android.widget.ToggleButton;
import com.androidplot.xy.*;
import java.text.DecimalFormat;
import java.util.Arrays;
public class XYPlotWithBgImgActivity extends Activity {
private static final String TAG = XYPlotWithBgImgActivity.class.getName();
private int SERIES_LEN = 50;
private Shader WHITE_SHADER = new LinearGradient(1, 1, 1, 1, Color.WHITE, Color.WHITE, Shader.TileMode.REPEAT);
private XYPlot plot;
private SimpleXYSeries series;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xy_plot_with_bq_img_example);
plot = (XYPlot) findViewById(R.id.graph_metrics);
//For debugging.
//plot.setMarkupEnabled(true);
// Format Graph
plot.getGraphWidget().getBackgroundPaint().setColor(Color.TRANSPARENT);
plot.getGraphWidget().getGridBackgroundPaint().setShader(WHITE_SHADER);
plot.getGraphWidget().getDomainGridLinePaint().setColor(Color.BLACK);
plot.getGraphWidget().getDomainGridLinePaint().setPathEffect(new DashPathEffect(new float[]{3, 3}, 1));
plot.getGraphWidget().getRangeGridLinePaint().setColor(Color.BLACK);
plot.getGraphWidget().getRangeGridLinePaint().setPathEffect(new DashPathEffect(new float[]{3, 3}, 1));
plot.getGraphWidget().getDomainOriginLinePaint().setColor(Color.BLACK);
plot.getGraphWidget().getRangeOriginLinePaint().setColor(Color.BLACK);
//plot.getGraphWidget().setMarginTop(10);
// Customize domain and range labels.
plot.setDomainLabel("x-vals");
plot.setRangeLabel("y-vals");
plot.setRangeValueFormat(new DecimalFormat("0"));
// Make the domain and range step correctly
plot.setRangeBoundaries(40, 160, BoundaryMode.FIXED);
plot.setRangeStep(XYStepMode.INCREMENT_BY_VAL, 20);
plot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 60);
plot.setTicksPerDomainLabel(2);
series = (SimpleXYSeries) getSeries();
LineAndPointFormatter lpFormat = new LineAndPointFormatter(
Color.BLACK,
Color.BLACK,
null, // No fill
new PointLabelFormatter(Color.TRANSPARENT) // Don't show text at points
);
plot.addSeries(series, lpFormat);
plot.redraw();
}
private SimpleXYSeries getSeries() {
Integer[] xVals = new Integer[SERIES_LEN];
Integer[] yVals = new Integer[SERIES_LEN];
xVals[0] = 0;
yVals[0] = 0;
for (int i = 1; i < SERIES_LEN; i += 1){
xVals[i] = xVals[i-1] + (int)(Math.random() * i);
yVals[i] = (int)(Math.random() * 140);
}
return new SimpleXYSeries(
Arrays.asList(xVals),
Arrays.asList(yVals),
"Sample Series");
}
public void onGraphStyleToggle(View v) {
boolean styleOn = ((ToggleButton) v).isChecked();
/*RectF graphRect = plot.getGraphWidget().getGridRect();
float segmentSize = 1.0f/6.0f;
LinearGradient lg = new LinearGradient(
0,
graphRect.top,
0,
graphRect.bottom,
new int[]{
Color.RED,
Color.YELLOW,
Color.GREEN,
Color.WHITE},
new float[]{
0,
segmentSize*2,
segmentSize*3,
segmentSize*5
},
Shader.TileMode.REPEAT
);
plot.getGraphWidget().getGridBackgroundPaint().setShader(lg);*/
RectF rect = plot.getGraphWidget().getGridRect();
BitmapShader myShader = new BitmapShader(
Bitmap.createScaledBitmap(
BitmapFactory.decodeResource(
getResources(),
R.drawable.graph_background),
1,
(int) rect.height(),
false),
Shader.TileMode.REPEAT,
Shader.TileMode.REPEAT);
Matrix m = new Matrix();
m.setTranslate(rect.left, rect.top);
myShader.setLocalMatrix(m);
if (styleOn)
plot.getGraphWidget().getGridBackgroundPaint().setShader(
myShader);
else
plot.getGraphWidget().getGridBackgroundPaint().setShader(WHITE_SHADER);
plot.redraw();
}
}