// 触发监听 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(); } }
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()); } }