@Override public void calcMinMax(Viewport viewport) { if (mBarValues == null || mBarValues.isEmpty()) return; mViewportYMax = -Float.MAX_VALUE; mViewportYMin = Float.MAX_VALUE; for (BarValue e : getVisiblePoints(viewport)) { calcMinMaxY(e); } float range = mViewportYMax - mViewportYMin; if (Float.compare(getMinValueOffsetPercent(), 0f) > 0f) { mViewportYMin = mViewportYMin - range * getMinValueOffsetPercent(); } if (Float.compare(getMaxValueOffsetPercent(), 0f) > 0f) { mViewportYMax = mViewportYMax + range * getMaxValueOffsetPercent(); } }
@Override public int getEntryCount() { if (mForceValueCount > 0) return mForceValueCount; if (mBarValues != null) { if (getMinValueCount() > mBarValues.size()) { return getMinValueCount(); } else { return mBarValues.size(); } } return 0; }
mRenderPaint.setStrokeWidth(barDataSet.getStrokeThickness()); mRenderPaint.setStyle(Paint.Style.FILL); mValueTextPaint.setColor(barDataSet.getValueColor()); mValueTextPaint.setTextSize(barDataSet.getValueTextSize()); int valueCount = barDataSet.getEntryCount(); switch (barDataSet.getAxisDependency()) { case AxisY.DEPENDENCY_RIGHT: min = rMin; float width = barDataSet.getBarWidth(); float visibleRange = barDataSet.getVisibleRange(mViewport); if (barDataSet.isAutoBarWidth() && visibleRange > 0) { width = mContentRect.width() / visibleRange; final float percent = barDataSet.getBarWidthPercent(); for (int i = 0; i < valueCount && i < barDataSet.getValues().size(); i++) { BarValue barValue = barDataSet.getEntryForIndex(i); mRenderPaint.setColor(barValue.getColor()); } else { mRenderPaint.setColor(barDataSet.getColor()); float x = startX + step * (i + barDataSet.getStartIndexOffset()); if (barDataSet.isDrawValueEnable()) {
public BarChartClickableModel() { barValueList.add(new BarValue(11)); barValueList.add(new BarValue(4)); barValueList.add(new BarValue(6)); barValueList.add(new BarValue(13)); barValueList.add(new BarValue(8)); barValueList.add(new BarValue(9)); barDataSet = new BarDataSet(barValueList); barDataSet.setMaxValueOffsetPercent(0.2f); barDataSet.setDrawValueEnable(true); barDataSet.setValueTextSize(24); barDataSet.setAutoBarWidth(true); }
@Override public void touch(float x, float y) { if (chart.isHighlightDisable()) return; for (BarDataSet dataSet : getDataSet()) { if (dataSet.isHighlightedVerticalEnable()) { highlight.setTouchX(x); highlight.setTouchY(y); int index = getEntryIndexByCoordinate(x, y) - dataSet.getStartIndexOffset(); if (index < dataSet.getValues().size()) { BarValue barValue = dataSet.getEntryForIndex(index); float xPosition = barValue.getX(); float yPosition = barValue.getY(); if (xPosition > 0 && yPosition > 0) { highlight.setX(xPosition); highlight.setY(yPosition); highlight.setDataIndex(index); chart.highlightValue(highlight); } } } } } });
barValueList.add(new BarValue(5)); barDataSet = new BarDataSet(barValueList, AxisY.DEPENDENCY_RIGHT); barDataSet.setAutoBarWidth(true); barDataSet.setColor(Color.DKGRAY);
@Override public boolean removeEntry(BarValue e) { if (e == null) return false; calcMinMaxY(e); return mBarValues.remove(e); }
@Override public boolean addEntry(BarValue e) { if (e == null) return false; if (mBarValues == null) { mBarValues = new ArrayList<>(); } calcMinMaxY(e); return mBarValues.add(e); }