Skip to content

Commit 1eae8e0

Browse files
committed
Improvements on piechart.
1 parent 280cb5c commit 1eae8e0

File tree

5 files changed

+48
-19
lines changed

5 files changed

+48
-19
lines changed

MPChartExample/src/com/xxmassdeveloper/mpchartexample/PieChartActivity.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ protected void onCreate(Bundle savedInstanceState) {
9494

9595
setData(3, 100);
9696

97-
mChart.animateY(1500, Easing.EasingOption.EaseInOutQuad);
97+
mChart.animateY(1400, Easing.EasingOption.EaseInOutQuad);
9898
// mChart.spin(2000, 0, 360);
9999

100100
Legend l = mChart.getLegend();
@@ -153,15 +153,15 @@ public boolean onOptionsItemSelected(MenuItem item) {
153153
mChart.invalidate();
154154
break;
155155
case R.id.animateX: {
156-
mChart.animateX(1800);
156+
mChart.animateX(1400);
157157
break;
158158
}
159159
case R.id.animateY: {
160-
mChart.animateY(1800);
160+
mChart.animateY(1400);
161161
break;
162162
}
163163
case R.id.animateXY: {
164-
mChart.animateXY(1800, 1800);
164+
mChart.animateXY(1400, 1400);
165165
break;
166166
}
167167
}
@@ -196,7 +196,7 @@ private void setData(int count, float range) {
196196
xVals.add(mParties[i % mParties.length]);
197197

198198
PieDataSet dataSet = new PieDataSet(yVals1, "Election Results");
199-
dataSet.setSliceSpace(3f);
199+
dataSet.setSliceSpace(2f);
200200
dataSet.setSelectionShift(5f);
201201

202202
// add a lot of colors
@@ -244,6 +244,7 @@ private SpannableString generateCenterSpannableText() {
244244
s.setSpan(new ForegroundColorSpan(Color.GRAY), 14, s.length() - 15, 0);
245245
s.setSpan(new RelativeSizeSpan(.8f), 14, s.length() - 15, 0);
246246
s.setSpan(new StyleSpan(Typeface.ITALIC), s.length() - 14, s.length(), 0);
247+
s.setSpan(new ForegroundColorSpan(ColorTemplate.getHoloBlue()), s.length() - 14, s.length(), 0);
247248
return s;
248249
}
249250

MPChartExample/src/com/xxmassdeveloper/mpchartexample/fragments/PieChartFrag.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package com.xxmassdeveloper.mpchartexample.fragments;
2+
import android.graphics.Color;
23
import android.graphics.Typeface;
34
import android.os.Bundle;
45
import android.support.v4.app.Fragment;
6+
import android.text.SpannableString;
7+
import android.text.style.ForegroundColorSpan;
8+
import android.text.style.RelativeSizeSpan;
59
import android.view.LayoutInflater;
610
import android.view.View;
711
import android.view.ViewGroup;
@@ -30,12 +34,12 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
3034
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), "OpenSans-Light.ttf");
3135

3236
mChart.setCenterTextTypeface(tf);
33-
mChart.setCenterText("Revenues");
34-
mChart.setCenterTextSize(22f);
37+
mChart.setCenterText(generateCenterText());
38+
mChart.setCenterTextSize(10f);
3539
mChart.setCenterTextTypeface(tf);
3640

3741
// radius of the center hole in percent of maximum radius
38-
mChart.setHoleRadius(45f);
42+
mChart.setHoleRadius(45f);
3943
mChart.setTransparentCircleRadius(50f);
4044

4145
Legend l = mChart.getLegend();
@@ -45,4 +49,11 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
4549

4650
return v;
4751
}
52+
53+
private SpannableString generateCenterText() {
54+
SpannableString s = new SpannableString("Revenues\nQuarters 2015");
55+
s.setSpan(new RelativeSizeSpan(2f), 0, 8, 0);
56+
s.setSpan(new ForegroundColorSpan(Color.GRAY), 8, s.length(), 0);
57+
return s;
58+
}
4859
}

MPChartExample/src/com/xxmassdeveloper/mpchartexample/fragments/SimpleFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ protected PieData generatePieData() {
113113
entries1.add(new Entry((float) (Math.random() * 60) + 40, i));
114114
}
115115

116-
PieDataSet ds1 = new PieDataSet(entries1, "Quarterly Revenues 2014");
116+
PieDataSet ds1 = new PieDataSet(entries1, "Quarterly Revenues 2015");
117117
ds1.setColors(ColorTemplate.VORDIPLOM_COLORS);
118118
ds1.setSliceSpace(2f);
119119
ds1.setValueTextColor(Color.WHITE);

MPChartExample/src/com/xxmassdeveloper/mpchartexample/listviewitems/PieChartItem.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import android.content.Context;
55
import android.graphics.Color;
66
import android.graphics.Typeface;
7+
import android.text.SpannableString;
8+
import android.text.style.ForegroundColorSpan;
9+
import android.text.style.RelativeSizeSpan;
710
import android.view.LayoutInflater;
811
import android.view.View;
912

@@ -13,16 +16,19 @@
1316
import com.github.mikephil.charting.data.ChartData;
1417
import com.github.mikephil.charting.data.PieData;
1518
import com.github.mikephil.charting.formatter.PercentFormatter;
19+
import com.github.mikephil.charting.utils.ColorTemplate;
1620
import com.xxmassdeveloper.mpchartexample.R;
1721

1822
public class PieChartItem extends ChartItem {
1923

2024
private Typeface mTf;
25+
private SpannableString mCenterText;
2126

2227
public PieChartItem(ChartData<?> cd, Context c) {
2328
super(cd);
2429

2530
mTf = Typeface.createFromAsset(c.getAssets(), "OpenSans-Regular.ttf");
31+
mCenterText = generateCenterText();
2632
}
2733

2834
@Override
@@ -53,9 +59,9 @@ public View getView(int position, View convertView, Context c) {
5359
holder.chart.setDescription("");
5460
holder.chart.setHoleRadius(52f);
5561
holder.chart.setTransparentCircleRadius(57f);
56-
holder.chart.setCenterText("MPChart\nAndroid");
62+
holder.chart.setCenterText(mCenterText);
5763
holder.chart.setCenterTextTypeface(mTf);
58-
holder.chart.setCenterTextSize(18f);
64+
holder.chart.setCenterTextSize(9f);
5965
holder.chart.setUsePercentValues(true);
6066
holder.chart.setExtraOffsets(5, 10, 50, 10);
6167

@@ -78,6 +84,17 @@ public View getView(int position, View convertView, Context c) {
7884
return convertView;
7985
}
8086

87+
private SpannableString generateCenterText() {
88+
SpannableString s = new SpannableString("MPAndroidChart\ncreated by\nPhilipp Jahoda");
89+
s.setSpan(new RelativeSizeSpan(1.6f), 0, 14, 0);
90+
s.setSpan(new ForegroundColorSpan(ColorTemplate.VORDIPLOM_COLORS[0]), 0, 14, 0);
91+
s.setSpan(new RelativeSizeSpan(.9f), 14, 25, 0);
92+
s.setSpan(new ForegroundColorSpan(Color.GRAY), 14, 25, 0);
93+
s.setSpan(new RelativeSizeSpan(1.4f), 25, s.length(), 0);
94+
s.setSpan(new ForegroundColorSpan(ColorTemplate.getHoloBlue()), 25, s.length(), 0);
95+
return s;
96+
}
97+
8198
private static class ViewHolder {
8299
PieChart chart;
83100
}

MPChartLib/src/com/github/mikephil/charting/renderer/PieChartRenderer.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public PieChartRenderer(PieChart chart, ChartAnimator animator,
6969
mTransparentCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
7070
mTransparentCirclePaint.setColor(Color.WHITE);
7171
mTransparentCirclePaint.setStyle(Style.FILL);
72-
mTransparentCirclePaint.setAlpha(100);
72+
mTransparentCirclePaint.setAlpha(105);
7373

7474
mCenterTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
7575
mCenterTextPaint.setColor(Color.BLACK);
@@ -266,19 +266,19 @@ protected void drawHole(Canvas c) {
266266

267267
PointF center = mChart.getCenterCircleBox();
268268

269-
if (transparentCircleRadius > holeRadius && mAnimator.getPhaseX() >= 1f
270-
&& mAnimator.getPhaseY() >= 1f) {
269+
// only draw the circle if it can be seen (not covered by the hole)
270+
if (transparentCircleRadius > holeRadius) {
271271

272-
//int color = mTransparentCirclePaint.getColor();
273-
274-
// make transparent
275-
//mTransparentCirclePaint.setColor(color & 0x60FFFFFF);
272+
// get original alpha
273+
int alpha = mTransparentCirclePaint.getAlpha();
274+
mTransparentCirclePaint.setAlpha((int) ((float) alpha * mAnimator.getPhaseX() * mAnimator.getPhaseY()));
276275

277276
// draw the transparent-circle
278277
mBitmapCanvas.drawCircle(center.x, center.y,
279278
radius / 100 * transparentCircleRadius, mTransparentCirclePaint);
280279

281-
//mTransparentCirclePaint.setColor(color);
280+
// reset alpha
281+
mTransparentCirclePaint.setAlpha(alpha);
282282
}
283283

284284
// draw the hole-circle

0 commit comments

Comments
 (0)