Step1: Adding MpAndroidChart android library into project
dependencies {
		compile 'com.github.PhilJay:MPAndroidChart:v2.1.6'
		}
	repositories {
        	maven { url "https://jitpack.io" }
    		}
Step2: Pie Chart layout in your xml file
<com.github.mikephil.charting.charts.PieChart
        	android:id="@+id/chart"
        	android:layout_width="400dp"
        	android:layout_height="300dp"
        	android:layout_gravity="center_horizontal"/>
Step3: Initializing pie chart and a dataset of different arraylists
// Piechart initialization
	pieChart = (PieChart) findViewById(R.id.chart);
        // array of images
        ArrayList<Drawable> array_image = new ArrayList<Drawable>();
        array_image.add(ContextCompat.getDrawable(this, R.drawable.creditcard));
        array_image.add(ContextCompat.getDrawable(this, R.drawable.dollar));
        array_image.add(ContextCompat.getDrawable(this, R.drawable.favourite));
        array_image.add(ContextCompat.getDrawable(this, R.drawable.plane));
        array_image.add(ContextCompat.getDrawable(this, R.drawable.others));
        // array of graph percentage value
        ArrayList<String> array_percent = new ArrayList<String>();
        array_percent.add(String.valueOf(15)+"%");
        array_percent.add(String.valueOf(10)+"%");
        array_percent.add(String.valueOf(25)+"%");
        array_percent.add(String.valueOf(20)+"%");
        array_percent.add(String.valueOf(30)+"%");
        // array of graph drawing size according to design
        ArrayList<Float> array_drawGraph = new ArrayList<Float>();
        array_drawGraph.add((float) 15);
        array_drawGraph.add((float) 10);
        array_drawGraph.add((float) 25);
        array_drawGraph.add((float) 20);
        array_drawGraph.add((float) 30);
        // array of graph different colors 
        ArrayList<Integer> colors = new ArrayList<Integer>();
        colors.add(ContextCompat.getColor(this, R.color.green));
        colors.add(ContextCompat.getColor(this, R.color.orange));
        colors.add(ContextCompat.getColor(this, R.color.blue));
        colors.add(ContextCompat.getColor(this, R.color.grey));
        colors.add(ContextCompat.getColor(this, R.color.yellow));
Step4: Set the data
// Now adding array of data to the entery set
        ArrayList<PieEntry> entries = new ArrayList<PieEntry>();
	// count is the number of values you need to display into graph
        for (int i=0; i<count; i++) {
            entries.add(new PieEntry(array_drawGraph.get(i), new CustomLabelWithIcon(array_percent.get(i), array_image.get(i))));
        }
        // initializing pie data set
        PieDataSet dataset = new PieDataSet(entries, "");
        // set the data
        PieData data = new PieData(dataset);        // initialize Piedata
        pieChart.setData(data);
	// colors according to the dataset
        dataset.setColors(colors);
	// adding legends to the desigred positions
        Legend l = pieChart.getLegend();
        l.setTextSize(14f);
        l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
        l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
        l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        l.setDrawInside(false);
        l.setTextColor(Color.BLACK);
        l.setEnabled(true);
	// calling method to set center text
        pieChart.setCenterText(generateCenterSpannableText());
	// if no need to add description
        pieChart.getDescription().setEnabled(false);
	// animation and the center text color
        pieChart.animateY(5000);
        pieChart.setEntryLabelColor(Color.BLACK);
    
// If we need to display center text with textStyle
    private SpannableString generateCenterSpannableText() {
        SpannableString s = new SpannableString("TOTAL SPENT\n$ 4000");
        s.setSpan(new RelativeSizeSpan(2f), 11, s.length(), 0);
        s.setSpan(new StyleSpan(Typeface.BOLD), 11, s.length(), 0);
        return s;
    }
 
                       
                    
1 Comment(s)