protected void drawHole(Canvas c) { if (mChart.isDrawHoleEnabled()) { float transparentCircleRadius = mChart.getTransparentCircleRadius(); float holeRadius = mChart.getHoleRadius(); float radius = mChart.getRadius(); PointF center = mChart.getCenterCircleBox(); // only draw the circle if it can be seen (not covered by the hole) if (transparentCircleRadius > holeRadius) { // get original alpha int alpha = mTransparentCirclePaint.getAlpha(); mTransparentCirclePaint.setAlpha( (int) ((float) alpha * mAnimator.getPhaseX() * mAnimator.getPhaseY())); // draw the transparent-circle mBitmapCanvas.drawCircle( center.x, center.y, radius / 100 * transparentCircleRadius, mTransparentCirclePaint); // reset alpha mTransparentCirclePaint.setAlpha(alpha); } // draw the hole-circle mBitmapCanvas.drawCircle(center.x, center.y, radius / 100 * holeRadius, mHolePaint); } }