Example #1
0
  // 触发监听
  private void triggerClick(float x, float y) {

    // 交叉线
    if (chart.getDyLineVisible()) chart.getDyLine().setCurrentXY(x, y);

    if (!chart.getListenItemClickStatus()) {
      // 交叉线
      if (chart.getDyLineVisible() && chart.getDyLine().isInvalidate()) this.invalidate();
    } else {
      BarPosition record = chart.getPositionRecord(x, y);
      if (null == record) {
        if (chart.getDyLineVisible()) this.invalidate();
        return;
      }

      if (record.getDataID() >= chartData.size()) return;
      BarData bData = chartData.get(record.getDataID());

      if (record.getDataChildID() >= bData.getDataSet().size()) return;
      Double bValue = bData.getDataSet().get(record.getDataChildID());

      // 显示选中框
      chart.showFocusRectF(record.getRectF());
      chart.getFocusPaint().setStyle(Style.STROKE);
      chart.getFocusPaint().setStrokeWidth(3);
      chart.getFocusPaint().setColor(Color.GREEN);

      // 在点击处显示tooltip
      mPaintToolTip.setAntiAlias(true);
      mPaintToolTip.setColor(bData.getColor());

      mDotToolTip.setDotStyle(XEnum.DotStyle.RECT);
      mDotToolTip.setColor(Color.BLUE); // bData.getColor());

      // 位置显示方法一:
      // 用下列方法可以让tooltip显示在柱形顶部
      // chart.getToolTip().setCurrentXY(record.getRectF().centerX(),record.getRectF().top);
      // 位置显示方法二:
      // 用下列方法可以让tooltip在所点击位置显示
      chart.getToolTip().setCurrentXY(x, y);
      chart.getToolTip().setStyle(XEnum.DyInfoStyle.ROUNDRECT);
      chart.getToolTip().addToolTip(mDotToolTip, bData.getKey(), mPaintToolTip);
      chart.getToolTip().addToolTip("数量:" + Double.toString(bValue), mPaintToolTip);
      chart.getToolTip().getBackgroundPaint().setAlpha(100);
      chart.getToolTip().setAlign(Align.CENTER);

      chart.getToolTip().setInfoStyle(XEnum.DyInfoStyle.CIRCLE);
      // chart.getToolTip().getBackgroundPaint().setColor(Color.rgb(30, 30, 30));
      this.invalidate();
    }
  }
Example #2
0
  private void chartRender() {
    try {
      // 设置绘图区默认缩进px值,留置空间显示Axis,Axistitle....
      int[] ltrb = getBarLnDefaultSpadding();
      chart.setPadding(ltrb[0], ltrb[1], ltrb[2], ltrb[3]);

      // 数据源
      chart.setDataSource(chartData);
      chart.setCategories(chartLabels);

      // 轴标题
      chart.getAxisTitle().setLeftTitle("数据库");
      chart.getAxisTitle().setLowerTitle("分布位置");

      // 数据轴
      chart.getDataAxis().setAxisMax(100);
      chart.getDataAxis().setAxisMin(0);
      chart.getDataAxis().setAxisSteps(5);

      // 定义数据轴标签显示格式
      chart
          .getDataAxis()
          .setLabelFormatter(
              new IFormatterTextCallBack() {

                @Override
                public String textFormatter(String value) {
                  // TODO Auto-generated method stub
                  Double tmp = Double.parseDouble(value);
                  DecimalFormat df = new DecimalFormat("#0");
                  String label = df.format(tmp).toString();
                  return (label);
                }
              });

      // 在柱形顶部显示值
      chart.getBar().setItemLabelVisible(true);

      // 设定格式
      chart.setItemLabelFormatter(
          new IFormatterDoubleCallBack() {
            @Override
            public String doubleFormatter(Double value) {
              // TODO Auto-generated method stub
              DecimalFormat df = new DecimalFormat("#0");
              String label = df.format(value).toString();
              return label;
            }
          });

      // 让柱子间没空白
      // chart.getBar().setBarInnerMargin(0d);

      // 轴颜色
      chart.getDataAxis().getAxisPaint().setColor(colorTitalAxes);
      chart.getCategoryAxis().getAxisPaint().setColor(colorTitalAxes);
      chart.getDataAxis().getTickMarksPaint().setColor(colorTitalAxes);
      chart.getCategoryAxis().getTickMarksPaint().setColor(colorTitalAxes);

      chart.getDataAxis().getTickLabelPaint().setColor(colorTitalAxes);
      chart.getCategoryAxis().getTickLabelPaint().setColor(colorTitalAxes);

      chart.getAxisTitle().getLeftTitlePaint().setColor(colorTitalAxes);
      chart.getAxisTitle().getLowerTitlePaint().setColor(colorTitalAxes);

      chart.getBar().getItemLabelPaint().setColor(Color.rgb(246, 133, 39));
      chart.getBar().getItemLabelPaint().setTextSize(15);

      // 指隔多少个轴刻度(即细刻度)后为主刻度
      chart.getDataAxis().setDetailModeSteps(5);

      // 显示十字交叉线
      chart.showDyLine();
      DyLine dyl = chart.getDyLine();
      if (null != dyl) {
        dyl.setDyLineStyle(XEnum.DyLineStyle.Horizontal);
        dyl.setLineDrawStyle(XEnum.LineStyle.DASH);
      }

      // 数据轴居中显示
      // chart.setDataAxisLocation(XEnum.AxisLocation.VERTICAL_CENTER);

      // 忽略Java的float计算误差,提高性能
      // chart.disableHighPrecision();

      // 柱形和标签居中方式
      // chart.setBarCenterStyle(XEnum.BarCenterStyle.TICKMARKS);

    } catch (Exception e) {
      // TODO Auto-generated catch block
      Log.e(TAG, "chartRender():" + e.toString());
    }
  }