예제 #1
0
  private void prepareChart() {
    Resources res = this.getResources();
    ChartPalette customPalette = chart.getPalette().clone();
    PaletteEntry entry = customPalette.getEntry(ChartPalette.BAR_FAMILY, 0);
    entry.setStrokeWidth(Util.getDimen(context, TypedValue.COMPLEX_UNIT_DIP, 1));
    entry.setFill(0xff3E3E3E);
    entry.setStroke(Color.WHITE);
    chart.setPalette(customPalette);

    CategoricalAxis horizontalAxis = new CategoricalAxis(this.context);
    horizontalAxis.setLabelMargin(20);
    chart.setHorizontalAxis(horizontalAxis);
    horizontalAxis.setLineThickness(res.getDimension(R.dimen.onedp));
    horizontalAxis.setLineColor(0xff66B3D4);

    LinearAxis verticalAxis = new LinearAxis(this.context);
    verticalAxis.setMinimum(-30);
    verticalAxis.setMaximum(10);
    verticalAxis.setMajorStep(10);
    verticalAxis.setShowLabels(false);
    verticalAxis.setHorizontalLocation(AxisHorizontalLocation.RIGHT);
    chart.setVerticalAxis(verticalAxis);
    verticalAxis.setTickColor(Color.TRANSPARENT);
    verticalAxis.setLineColor(Color.TRANSPARENT);

    RangeBarSeries barSeries = new RangeBarSeries(this.context);
    barSeries.setShowLabels(true);

    barSeries.setHighBinding(
        new GenericDataPointBinding<DataClass, Float>(
            new Function<DataClass, Float>() {
              @Override
              public Float apply(DataClass argument) {
                return argument.value;
              }
            }));

    barSeries.setLowBinding(
        new GenericDataPointBinding<DataClass, Float>(
            new Function<DataClass, Float>() {
              @Override
              public Float apply(DataClass argument) {
                return argument.value2;
              }
            }));

    barSeries.setCategoryBinding(
        new GenericDataPointBinding<DataClass, String>(
            new Function<DataClass, String>() {
              @Override
              public String apply(DataClass argument) {
                return argument.category;
              }
            }));

    LabelRenderer seriesLabelRenderer = new LabelRenderer(res, barSeries);
    barSeries.setLabelRenderer(seriesLabelRenderer);
    this.chart.getSeries().add(barSeries);

    CartesianChartGrid grid = new CartesianChartGrid(this.context);
    chart.setGrid(grid);

    grid.setMajorYLinesRenderMode(GridLineRenderMode.INNER_AND_LAST);
    grid.setLineThickness(res.getDimension(R.dimen.onedp));
    grid.setLineColor(Color.WHITE);
    grid.setMajorLinesVisibility(GridLineVisibility.Y);
    grid.setStripLinesVisibility(GridLineVisibility.Y);
    ObservableCollection<Paint> yBrushes = grid.getYStripeBrushes();
    yBrushes.clear();

    Paint paint = new Paint();
    paint.setColor(0xb27ECCED);
    yBrushes.add(paint);

    paint = new Paint();
    paint.setColor(0xb286EBD7);
    yBrushes.add(paint);

    paint = new Paint();
    paint.setColor(0xb29DF5B7);
    yBrushes.add(paint);

    paint = new Paint();
    paint.setColor(0xb2C2EB95);
    yBrushes.add(paint);

    chart.setChartPadding(0, 0, 0, 100);

    AnnotationRenderer renderer = new AnnotationRenderer();
    for (int i = -20; i <= 10; i += 10) {
      CartesianCustomAnnotation degreeAnnotation = new CartesianCustomAnnotation(this.context);
      degreeAnnotation.setContentRenderer(renderer);
      degreeAnnotation.setContent(Integer.toString(i) + "\u00b0");
      degreeAnnotation.setHorizontalAxis(horizontalAxis);
      degreeAnnotation.setVerticalAxis(verticalAxis);
      degreeAnnotation.setHorizontalValue("22:00");
      degreeAnnotation.setVerticalValue((double) i);
      chart.getAnnotations().add(degreeAnnotation);
    }
  }