/* | |
* Copyright 2012 AndroidPlot.com | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package com.androidplot.demos; | |
import android.app.Activity; | |
import android.graphics.*; | |
import android.os.Bundle; | |
import com.androidplot.xy.SimpleXYSeries; | |
import com.androidplot.xy.XYSeries; | |
import com.androidplot.xy.*; | |
import java.text.DecimalFormat; | |
import java.text.FieldPosition; | |
import java.text.Format; | |
import java.text.ParsePosition; | |
import java.util.Arrays; | |
public class StepChartExampleActivity extends Activity | |
{ | |
private XYPlot mySimpleXYPlot; | |
@Override | |
public void onCreate(Bundle savedInstanceState) | |
{ | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.step_chart_example); | |
// initialize our XYPlot reference: | |
mySimpleXYPlot = (XYPlot) findViewById(R.id.stepChartExamplePlot); | |
// y-vals to plot: | |
Number[] series1Numbers = {1, 2, 3, 4, 2, 3, 4, 2, 2, 2, 3, 4, 2, 3, 2, 2}; | |
// create our series from our array of nums: | |
XYSeries series2 = new SimpleXYSeries( | |
Arrays.asList(series1Numbers), | |
SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, | |
"Thread #1"); | |
//mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getLegendWidget()); | |
mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE); | |
mySimpleXYPlot.getGraphWidget().getDomainGridLinePaint().setColor(Color.BLACK); | |
mySimpleXYPlot.getGraphWidget().getDomainGridLinePaint().setPathEffect(new DashPathEffect(new float[]{1, 1}, 1)); | |
mySimpleXYPlot.getGraphWidget().getRangeGridLinePaint().setColor(Color.BLACK); | |
mySimpleXYPlot.getGraphWidget().getRangeGridLinePaint().setPathEffect(new DashPathEffect(new float[]{1, 1}, 1)); | |
mySimpleXYPlot.getGraphWidget().getDomainOriginLinePaint().setColor(Color.BLACK); | |
mySimpleXYPlot.getGraphWidget().getRangeOriginLinePaint().setColor(Color.BLACK); | |
mySimpleXYPlot.getGraphWidget().setMarginRight(5); | |
// Create a formatter to use for drawing a series using LineAndPointRenderer: | |
LineAndPointFormatter series1Format = new LineAndPointFormatter( | |
Color.rgb(0, 100, 0), // line color | |
Color.rgb(0, 100, 0), // point color | |
Color.rgb(100, 200, 0), null); // fill color | |
// setup our line fill paint to be a slightly transparent gradient: | |
Paint lineFill = new Paint(); | |
lineFill.setAlpha(200); | |
lineFill.setShader(new LinearGradient(0, 0, 0, 250, Color.WHITE, Color.BLUE, Shader.TileMode.MIRROR)); | |
StepFormatter stepFormatter = new StepFormatter(Color.rgb(0, 0,0), Color.BLUE); | |
stepFormatter.getLinePaint().setStrokeWidth(1); | |
stepFormatter.getLinePaint().setAntiAlias(false); | |
stepFormatter.setFillPaint(lineFill); | |
mySimpleXYPlot.addSeries(series2, stepFormatter); | |
// adjust the domain/range ticks to make more sense; label per tick for range and label per 5 ticks domain: | |
mySimpleXYPlot.setRangeStep(XYStepMode.INCREMENT_BY_VAL, 1); | |
mySimpleXYPlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 1); | |
mySimpleXYPlot.setTicksPerRangeLabel(1); | |
mySimpleXYPlot.setTicksPerDomainLabel(5); | |
// customize our domain/range labels | |
//mySimpleXYPlot.setDomainLabel("Time (Secs)"); | |
//mySimpleXYPlot.setRangeLabel("Server State"); | |
//mySimpleXYPlot.getGraphWidget().getGridLinePaint().setAlpha(0); | |
// get rid of decimal points in our domain labels: | |
mySimpleXYPlot.setDomainValueFormat(new DecimalFormat("0")); | |
// create a custom formatter to draw our state names as range tick labels: | |
mySimpleXYPlot.setRangeValueFormat(new Format() { | |
@Override | |
public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) { | |
Number num = (Number) obj; | |
switch(num.intValue()) { | |
case 1: | |
toAppendTo.append("Init"); | |
break; | |
case 2: | |
toAppendTo.append("Idle"); | |
break; | |
case 3: | |
toAppendTo.append("Recv"); | |
break; | |
case 4: | |
toAppendTo.append("Send"); | |
break; | |
default: | |
toAppendTo.append("Unknown"); | |
break; | |
} | |
return toAppendTo; | |
} | |
@Override | |
public Object parseObject(String source, ParsePosition pos) { | |
return null; | |
} | |
}); | |
// by default, AndroidPlot displays developer guides to aid in laying out your plot. | |
// To get rid of them call disableAllMarkup(): | |
//mySimpleXYPlot.disableAllMarkup(); | |
} | |
} |