All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
*
*/
package com.nekocode.xuedao.piechart;
import java.util.List;
import com.nekocode.xuedao.utils.MyUtils;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.RectF;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
public class PieChart extends BaseChart {
public static final String DEFAULT_TITLE = "Pie Chart";
public static final boolean DEFAULT_DISPLAY_RADIUS = true;
public static final int DEFAULT_RADIUS_LENGTH = 80;
public static final int DEFAULT_RADIUS_COLOR = Color.WHITE;
public static final int DEFAULT_CIRCLE_BORDER_COLOR = Color.WHITE;
public static final Point DEFAULT_POSITION = new Point(0, 0);
private List data;
private String title = DEFAULT_TITLE;
private Point position = DEFAULT_POSITION;
private int radiusLength = DEFAULT_RADIUS_LENGTH;
private int radiusColor = DEFAULT_RADIUS_COLOR;
private int circleBorderColor = DEFAULT_CIRCLE_BORDER_COLOR;
private boolean displayRadius = DEFAULT_DISPLAY_RADIUS;
/*
* (non-Javadoc)
*
* @param context
*
* @see cn.limc.androidcharts.view.BaseChart#BaseChart(Context)
*/
public PieChart(Context context) {
super(context);
}
/*
* (non-Javadoc)
*
* @param context
*
* @param attrs
*
* @param defStyle
*
* @see cn.limc.androidcharts.view.BaseChart#BaseChart(Context,
* AttributeSet, int)
*/
public PieChart(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/*
* (non-Javadoc)
*
* @param context
*
* @param attrs
*
* @see cn.limc.androidcharts.view.BaseChart#BaseChart(Context,
* AttributeSet)
*/
public PieChart(Context context, AttributeSet attrs) {
super(context, attrs);
}
/*
* (non-Javadoc)
*
*
Called when is going to draw this chart
* 銉併儯銉笺儓銈掓浉銇忓墠銆併儭銈姐儍銉夈倰鍛笺伓
* 缁樺埗鍥捐〃鏃惰皟鐢/p>
*
* @param canvas
*
* @see android.view.View#onDraw(android.graphics.Canvas)
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// get safe rect
int rect = super.getWidth() > super.getHeight() super.getHeight()
: super.getWidth();
// calculate radius length
radiusLength = (int) ((rect / 2f) * 0.90);
// calculate position
position = new Point((int) (getWidth() / 2f), (int) (getHeight() / 2f));
// draw this chart
drawCircle(canvas);
// draw data on chart
drawData(canvas);
}
protected void drawCircle(Canvas canvas) {
Paint mPaintCircleBorder = new Paint();
mPaintCircleBorder.setColor(Color.WHITE);
mPaintCircleBorder.setStyle(Style.STROKE);
mPaintCircleBorder.setStrokeWidth(2);
mPaintCircleBorder.setAntiAlias(true);
// draw a circle
canvas.drawCircle(position.x, position.y, radiusLength,
mPaintCircleBorder);
}
protected void drawData(Canvas canvas) {
if (n