This commit is contained in:
parent
b0f5ec1bf1
commit
95dd249cf3
4 changed files with 36 additions and 9 deletions
|
@ -163,7 +163,8 @@ public class PieChartActivity extends DemoBase implements OnSeekBarChangeListene
|
|||
break;
|
||||
}
|
||||
case R.id.actionToggleSpin: {
|
||||
mChart.spin(1000, mChart.getRotationAngle(), mChart.getRotationAngle() + 360, Easing.EasingOption.EaseInCubic);
|
||||
mChart.spin(1000, mChart.getRotationAngle(), mChart.getRotationAngle() + 360, Easing.EasingOption
|
||||
.EaseInCubic);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -183,16 +184,16 @@ public class PieChartActivity extends DemoBase implements OnSeekBarChangeListene
|
|||
|
||||
float mult = range;
|
||||
|
||||
ArrayList<PieEntry> yVals1 = new ArrayList<PieEntry>();
|
||||
ArrayList<PieEntry> values = new ArrayList<PieEntry>();
|
||||
|
||||
// IMPORTANT: In a PieChart, no values (Entry) should have the same
|
||||
// xIndex (even if from different DataSets), since no values can be
|
||||
// drawn above each other.
|
||||
for (int i = 0; i < count + 1; i++) {
|
||||
yVals1.add(new PieEntry((float) ((Math.random() * mult) + mult / 5), mParties[i % mParties.length]));
|
||||
values.add(new PieEntry((float) ((Math.random() * mult) + mult / 5), mParties[i % mParties.length]));
|
||||
}
|
||||
|
||||
PieDataSet dataSet = new PieDataSet(yVals1, "Election Results");
|
||||
PieDataSet dataSet = new PieDataSet(values, "Election Results");
|
||||
dataSet.setSliceSpace(3f);
|
||||
dataSet.setSelectionShift(5f);
|
||||
|
||||
|
|
|
@ -235,8 +235,7 @@ public class BarChartRenderer extends DataRenderer {
|
|||
|
||||
drawValue(c, dataSet.getValueFormatter(), val, entry, i, x,
|
||||
val >= 0 ? (buffer.buffer[j + 1] + posOffset) : (buffer.buffer[j + 3] + negOffset),
|
||||
dataSet.getValueTextColor
|
||||
(j / 4));
|
||||
dataSet.getValueTextColor(j / 4));
|
||||
}
|
||||
|
||||
// if we have stacks
|
||||
|
|
|
@ -178,6 +178,22 @@ public class PieChartRenderer extends DataRenderer {
|
|||
return spacedRadius;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the sliceSpace to use based on visible values and their size compared to the set sliceSpace.
|
||||
*
|
||||
* @param dataSet
|
||||
* @return
|
||||
*/
|
||||
protected float getSliceSpace(IPieDataSet dataSet) {
|
||||
|
||||
float spaceSizeRatio = dataSet.getSliceSpace() / mViewPortHandler.getSmallestContentExtension();
|
||||
float minValueRatio = dataSet.getYMin() / mChart.getData().getYValueSum() * 2;
|
||||
|
||||
float sliceSpace = spaceSizeRatio > minValueRatio ? 0f : dataSet.getSliceSpace();
|
||||
|
||||
return sliceSpace;
|
||||
}
|
||||
|
||||
protected void drawDataSet(Canvas c, IPieDataSet dataSet) {
|
||||
|
||||
float angle = 0;
|
||||
|
@ -205,7 +221,7 @@ public class PieChartRenderer extends DataRenderer {
|
|||
}
|
||||
}
|
||||
|
||||
final float sliceSpace = visibleAngleCount <= 1 ? 0.f : dataSet.getSliceSpace();
|
||||
final float sliceSpace = visibleAngleCount <= 1 ? 0.f : getSliceSpace(dataSet);
|
||||
|
||||
for (int j = 0; j < entryCount; j++) {
|
||||
|
||||
|
@ -411,6 +427,8 @@ public class PieChartRenderer extends DataRenderer {
|
|||
|
||||
float offset = Utils.convertDpToPixel(5.f);
|
||||
|
||||
final float sliceSpace = getSliceSpace(dataSet);
|
||||
|
||||
for (int j = 0; j < entryCount; j++) {
|
||||
|
||||
PieEntry entry = dataSet.getEntryForIndex(j);
|
||||
|
@ -421,7 +439,6 @@ public class PieChartRenderer extends DataRenderer {
|
|||
angle = absoluteAngles[xIndex - 1] * phaseX;
|
||||
|
||||
final float sliceAngle = drawAngles[xIndex];
|
||||
final float sliceSpace = dataSet.getSliceSpace();
|
||||
final float sliceSpaceMiddleAngle = sliceSpace / (Utils.FDEG2RAD * labelRadius);
|
||||
|
||||
// offset needed to center the drawn text in the slice
|
||||
|
|
|
@ -8,7 +8,8 @@ import android.util.Log;
|
|||
import android.view.View;
|
||||
|
||||
/**
|
||||
* Class that contains information about the charts current viewport settings, including offsets, scale & translation levels, ...
|
||||
* Class that contains information about the charts current viewport settings, including offsets, scale & translation
|
||||
* levels, ...
|
||||
*
|
||||
* @author Philipp Jahoda
|
||||
*/
|
||||
|
@ -173,6 +174,15 @@ public class ViewPortHandler {
|
|||
return mChartWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the smallest extension of the content rect (width or height).
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public float getSmallestContentExtension() {
|
||||
return Math.min(mContentRect.width(), mContentRect.height());
|
||||
}
|
||||
|
||||
/**
|
||||
* ################ ################ ################ ################
|
||||
*/
|
||||
|
|
Loading…
Add table
Reference in a new issue