Back to project page customhellochartdemo.
The source code is released under:
Apache License
If you think the Android project customhellochartdemo listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package lecho.lib.hellocharts.model; // w w w .j a v a2 s.co m import java.util.ArrayList; import java.util.Collections; import java.util.List; import android.graphics.PathEffect; import lecho.lib.hellocharts.util.Utils; import lecho.lib.hellocharts.view.Chart; /** * Single line for line chart. * */ public class Line { private static final int DEFAULT_LINE_STROKE_WIDTH_DP = 3; private static final int DEFAULT_POINT_RADIUS_DP = 6; private static final int DEFAULT_AREA_TRANSPARENCY = 64; private int color = Utils.DEFAULT_COLOR; private int darkenColor = Utils.DEFAULT_DARKEN_COLOR; /** Transparency of area when line is filled. **/ private int areaTransparency = DEFAULT_AREA_TRANSPARENCY; private int strokeWidth = DEFAULT_LINE_STROKE_WIDTH_DP; private int pointRadius = DEFAULT_POINT_RADIUS_DP; private boolean hasPoints = true; private boolean hasLines = true; private boolean hasLabels = false; private boolean hasLabelsOnlyForSelected = false; private boolean isCubic = false; private boolean isFilled = false; private ValueShape shape = ValueShape.CIRCLE; private PathEffect pathEffect; private ValueFormatter formatter = new SimpleValueFormatter(); private List<PointValue> values = new ArrayList<PointValue>(); public Line() { } public Line(List<PointValue> values) { setValues(values); } public Line(Line line) { this.color = line.color; this.darkenColor = line.color; this.areaTransparency = line.areaTransparency; this.strokeWidth = line.strokeWidth; this.pointRadius = line.pointRadius; this.hasPoints = line.hasPoints; this.hasLines = line.hasLines; this.hasLabels = line.hasLabels; this.hasLabelsOnlyForSelected = line.hasLabelsOnlyForSelected; this.isCubic = line.isCubic; this.isFilled = line.isFilled; this.shape = line.shape; this.pathEffect = line.pathEffect; this.formatter = line.formatter; for (PointValue pointValue : line.values) { this.values.add(new PointValue(pointValue)); } } public void update(float scale) { for (PointValue value : values) { value.update(scale); } } public void finish() { for (PointValue value : values) { value.finish(); } } public void setValues(List<PointValue> values) { if (null == values) { this.values = Collections.emptyList(); } else { this.values = values; } } public List<PointValue> getValues() { return this.values; } public int getColor() { return color; } public Line setColor(int color) { this.color = color; this.darkenColor = Utils.darkenColor(color); return this; } public int getDarkenColor() { return darkenColor; } /** * @see #setAreaTransparency(int) */ public int getAreaTransparency() { return areaTransparency; } /** * Set area transparency(255 is full opacity) for filled lines * * @param areaTransparency * @return */ public Line setAreaTransparency(int areaTransparency) { this.areaTransparency = areaTransparency; return this; } public int getStrokeWidth() { return strokeWidth; } public Line setStrokeWidth(int strokeWidth) { this.strokeWidth = strokeWidth; return this; } public boolean hasPoints() { return hasPoints; } public Line setHasPoints(boolean hasPoints) { this.hasPoints = hasPoints; return this; } public boolean hasLines() { return hasLines; } public Line setHasLines(boolean hasLines) { this.hasLines = hasLines; return this; } public boolean hasLabels() { return hasLabels; } public Line setHasLabels(boolean hasLabels) { this.hasLabels = hasLabels; if (hasLabels) { this.hasLabelsOnlyForSelected = false; } return this; } /** * @see #setHasLabelsOnlyForSelected(boolean) */ public boolean hasLabelsOnlyForSelected() { return hasLabelsOnlyForSelected; } /** * Set true if you want to show value labels only for selected value, works best when chart has * isValueSelectionEnabled set to true {@link Chart#setValueSelectionEnabled(boolean)}. */ public Line setHasLabelsOnlyForSelected(boolean hasLabelsOnlyForSelected) { this.hasLabelsOnlyForSelected = hasLabelsOnlyForSelected; if (hasLabelsOnlyForSelected) { this.hasLabels = false; } return this; } public int getPointRadius() { return pointRadius; } /** * Set radius for points for this line. * * @param pointRadius * @return */ public Line setPointRadius(int pointRadius) { this.pointRadius = pointRadius; return this; } public boolean isCubic() { return isCubic; } public Line setCubic(boolean isCubic) { this.isCubic = isCubic; return this; } public boolean isFilled() { return isFilled; } public Line setFilled(boolean isFilled) { this.isFilled = isFilled; return this; } /** * @see #setShape(ValueShape) */ public ValueShape getShape() { return shape; } /** * Set shape for points, possible values: SQUARE, CIRCLE * * @param shape * @return */ public Line setShape(ValueShape shape) { this.shape = shape; return this; } public PathEffect getPathEffect() { return pathEffect; } /** * Set path effect for this line, note: it will slow down drawing, try to not use complicated effects, * DashPathEffect should be safe choice. * * @param pathEffect */ public void setPathEffect(PathEffect pathEffect) { this.pathEffect = pathEffect; } public ValueFormatter getFormatter() { return formatter; } public Line setFormatter(ValueFormatter formatter) { if (null == formatter) { this.formatter = new SimpleValueFormatter(); } else { this.formatter = formatter; } return this; } }