Android绘制简单饼状图

原项目地址:https://github.com/limccn/Android-Charts

因为在项目中需要用到绘制饼状图,所以对github下的android-charts库进行了精简和修改,貌似该库本身有些bug,例如文字绘制有时候会错位,我改了一些地方,有兴趣的可以将下面所有代码复制进自己项目中,使用方法如下:

mData[0] = new ArrayList<TitleValueColorEntity>();
 for(int i=0; i<5; i++) {
  mData[0].add(new TitleValueColorEntity(mTitle[i],
    needTime[i],
    this.getResources().getColor(mColorsId[i])));
 }

mPieChart.setData(mData[2]);

Android绘制简单饼状图

源码:

/*
 * BaseChart.java
 * Android-Charts
 *
 * Created by limc on 2013.
 *
 * Copyright 2011 limc.cn 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
 *
 *
 *
 * 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 android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;

public class BaseChart extends View {

/*
  * (non-Javadoc)
  *
  * @param context
  *
  * @see android.view.View#BaseChart(Context)
  */
 public BaseChart(Context context) {
  super(context);
 }

/*
  * (non-Javadoc)
  *
  * @param context
  *
  * @param attrs
  *
  * @see android.view.View#BaseChart(Context, AttributeSet)
  */
 public BaseChart(Context context, AttributeSet attrs) {
  super(context, attrs);
 }

/*
  * (non-Javadoc)
  *
  * @param context
  *
  * @param attrs
  *
  * @param defStyle
  *
  * @see android.view.View#BaseChart(Context, AttributeSet, int)
  */
 public BaseChart(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
 }

/*
  * (non-Javadoc)
  *
  * @param widthMeasureSpec
  *
  * @param heightMeasureSpec
  *
  * @see android.view.View#onMeasure(int, int)
  */
 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  setMeasuredDimension(measureWidth(widthMeasureSpec),
    measureHeight(heightMeasureSpec));
 }

/*
  * (non-Javadoc)
  *
  * @param gainFocus
  *
  * @param direction
  *
  * @param previouslyFocusedRect
  *
  * @see android.view.View#onFocusChanged(boolean, int,
  * android.graphics.Rect)
  */
 @Override
 protected void onFocusChanged(boolean gainFocus, int direction,
   Rect previouslyFocusedRect) {
  super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
 }

private int measureWidth(int measureSpec) {
  int result = 0;
  int specMode = MeasureSpec.getMode(measureSpec);
  int specSize = MeasureSpec.getSize(measureSpec);

if (specMode == MeasureSpec.EXACTLY) {
   result = specSize;
  } else if (specMode == MeasureSpec.AT_MOST) {
   result = Math.min(result, specSize);
  }
  return result;
 }

private int measureHeight(int measureSpec) {
  int result = 0;
  int specMode = MeasureSpec.getMode(measureSpec);
  int specSize = MeasureSpec.getSize(measureSpec);

if (specMode == MeasureSpec.EXACTLY) {
   result = specSize;
  } else if (specMode == MeasureSpec.AT_MOST) {
   result = Math.min(result, specSize);
  }
  return result;
 }
}

---------------------------------分割线---------------------------------

/*
 * PieChart.java
 * Android-Charts
 *
 * Created by limc on 2011/05/29.
 *
 * Copyright 2011 limc.cn 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
 *
 *
 *
 * 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;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/51502872597f0fe68fce7a596068373b.html