Android Open Source - markj Pie Graph






From Project

Back to project page markj.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project markj listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.markjmind.mobile.api.android.ui.drawgraph;
/*  w w w .ja va 2 s . c o  m*/
import java.util.ArrayList;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class PieGraph extends View{
  
  float mDensity;
  public int mRadius = 30;
  public int mBackColor = 0;
  Paint Pnt = new Paint();
  
  ArrayList<PieGraphInfo> pieInfo = new ArrayList<PieGraphInfo>();

  public PieGraph(Context context) {
    super(context);
    init();
  }
  
  public PieGraph(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
  }

  public void init(){
    mDensity = getContext().getResources().getDisplayMetrics().density;
    clear();
  }
  
  public void setRadius(int radius){
    this.mRadius = (int)(radius*mDensity);
  }

  public void setBackgroundColor(int color){
    mBackColor = color;
  }
  
  public void add(PieGraphInfo info){
    pieInfo.add(info);
  }
  
  public void add(int angle, int color){
    pieInfo.add(new PieGraphInfo(angle,color));
    invalidate();
    
  }
  
  public void clear(){
    pieInfo.clear();
  }
  
  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    drawBackCircle(canvas);
    drawCircle(canvas);
    
  }
  
  
  private void drawCircle(Canvas canvas){
    Pnt.setStrokeWidth(mRadius);  
    Pnt.setStyle(Paint.Style.STROKE);
    Pnt.setDither(true);
    int w = getWidth();
    int h = getHeight();
    int stW=0;
    int stH=0;
    if(w>h){
      stW = (w-h)/2+mRadius/2;
      stH = mRadius/2;
      w=h;
    }else{
      stW = mRadius/2;
      stH = (h-w)/2+mRadius/2;
      h=w;
    }
    w = w+stW-mRadius;
    h = h+stH-mRadius;

    RectF rect=new RectF(stW,stH,w,h);
    int pre_a = -90;
    
    for(int i=0;i<pieInfo.size();i++){
      Pnt.setColor(pieInfo.get(i).color);
      canvas.drawArc(rect,pre_a,pieInfo.get(i).angle,false,Pnt);
      pre_a = pre_a+pieInfo.get(i).angle;
    }
  }
  
  private void drawBackCircle(Canvas canvas){
    Paint Pnt = new Paint();
    Pnt.setColor(mBackColor);
    Pnt.setStrokeWidth(mRadius);  
    Pnt.setStyle(Paint.Style.STROKE);
    
    int w = getWidth();
    int h = getHeight();
    int stW=0;
    int stH=0;
    if(w>h){
      stW = (w-h)/2+mRadius/2;
      stH = mRadius/2;
      w=h;
    }else{
      stW = mRadius/2;
      stH = (h-w)/2+mRadius/2;
      h=w;
    }
    w = w+stW-mRadius;
    h = h+stH-mRadius;

    RectF rect=new RectF(stW,stH,w,h);
      canvas.drawArc(rect,0,360,false,Pnt);
  }
  
  public class PieGraphInfo{
    public int angle;
    public int color;
    public PieGraphInfo(int angle, int color){
      this.angle = angle;
      this.color = color;
    }
  }
  
}




Java Source Code List

com.markjmind.mobile.api.android.controller.JwAsyncTask.java
com.markjmind.mobile.api.android.controller.JwMapperException.java
com.markjmind.mobile.api.android.controller.JwMemberMapper.java
com.markjmind.mobile.api.android.controller.JwStringID.java
com.markjmind.mobile.api.android.controller.JwViewController.java
com.markjmind.mobile.api.android.controller.JwViewerCache.java
com.markjmind.mobile.api.android.controller.JwViewer.java
com.markjmind.mobile.api.android.controller.Jwc.java
com.markjmind.mobile.api.android.controller.OnClickListenerReceiver.java
com.markjmind.mobile.api.android.controller.ViewerXmlMapper.java
com.markjmind.mobile.api.android.exception.JwErrorCode.java
com.markjmind.mobile.api.android.exception.JwException.java
com.markjmind.mobile.api.android.json.JSONMsgString.java
com.markjmind.mobile.api.android.json.JwJOSNTreeArray.java
com.markjmind.mobile.api.android.json.JwJSONReader.java
com.markjmind.mobile.api.android.ui.JwAnimation.java
com.markjmind.mobile.api.android.ui.JwGroup.java
com.markjmind.mobile.api.android.ui.JwMenu.java
com.markjmind.mobile.api.android.ui.JwOnGroupSelect.java
com.markjmind.mobile.api.android.ui.JwTabGroup.java
com.markjmind.mobile.api.android.ui.JwTouchGroupListener.java
com.markjmind.mobile.api.android.ui.JwTouchGroup.java
com.markjmind.mobile.api.android.ui.JwTouchMotionGroupLisener.java
com.markjmind.mobile.api.android.ui.JwTouchMotionGroup.java
com.markjmind.mobile.api.android.ui.drawgraph.GraphBoard.java
com.markjmind.mobile.api.android.ui.drawgraph.GraphSkin.java
com.markjmind.mobile.api.android.ui.drawgraph.HBackLineSkin.java
com.markjmind.mobile.api.android.ui.drawgraph.LineGraphSkin.java
com.markjmind.mobile.api.android.ui.drawgraph.PieGraph.java
com.markjmind.mobile.api.android.ui.drawgraph.RectGraphSkin.java
com.markjmind.mobile.api.android.ui.drawgraph.SimpleStyle.java
com.markjmind.mobile.api.android.ui.drawgraph.TextArraySkin.java
com.markjmind.mobile.api.android.ui.drawgraph.VBackLineSkin.java
com.markjmind.mobile.api.android.ui.graph.Arc.java
com.markjmind.mobile.api.android.ui.graph.BarElement.java
com.markjmind.mobile.api.android.ui.graph.BarLayout.java
com.markjmind.mobile.api.android.ui.graph.Bar.java
com.markjmind.mobile.api.android.ui.graph.IPieSkin.java
com.markjmind.mobile.api.android.ui.graph.LineLayout.java
com.markjmind.mobile.api.android.ui.graph.MeasureLayout.java
com.markjmind.mobile.api.android.ui.graph.PieArcRoundSkin.java
com.markjmind.mobile.api.android.ui.graph.PieLayout.java
com.markjmind.mobile.api.android.ui.graph.PiePercentSkin.java
com.markjmind.mobile.api.android.ui.view.JwBaseDropDown.java
com.markjmind.mobile.api.android.ui.view.JwDropDown.java
com.markjmind.mobile.api.android.ui.view.JwSlidingLayout.java
com.markjmind.mobile.api.android.ui.view.JwWheelView.java
com.markjmind.mobile.api.android.ui.view.StickerListener.java
com.markjmind.mobile.api.android.ui.view.StickerView.java
com.markjmind.mobile.api.android.ui.view.textview.JwTextViewAutoScale.java
com.markjmind.mobile.api.android.ui.view.textview.JwTextViewFonts.java
com.markjmind.mobile.api.android.ui.view.textview.JwTextViewWrapScale.java
com.markjmind.mobile.api.android.ui.wrapper.JwAlertDialog.java
com.markjmind.mobile.api.android.ui.wrapper.JwToast.java
com.markjmind.mobile.api.android.util.JwFile.java
com.markjmind.mobile.api.android.util.JwPreferenceList.java
com.markjmind.mobile.api.android.util.JwPreference.java
com.markjmind.mobile.api.android.util.JwSound.java
com.markjmind.mobile.api.android.util.JwTextUtils.java
com.markjmind.mobile.api.android.util.PhoneInfo.java
com.markjmind.mobile.api.android.util.WebConnection.java
com.markjmind.mobile.api.android.xml.JwDomHandler.java
com.markjmind.mobile.api.android.xml.JwDomLoader.java
com.markjmind.mobile.api.android.xml.JwEditElementHandler.java
com.markjmind.mobile.api.android.xml.JwXmlLoader.java
com.markjmind.mobile.api.android.xml.JwXmlResoure.java
com.markjmind.mobile.api.hub.ArrayJDhub.java
com.markjmind.mobile.api.hub.DBhub.java
com.markjmind.mobile.api.hub.JDhub.java
com.markjmind.mobile.api.hub.Loader.java
com.markjmind.mobile.api.hub.StoreList.java
com.markjmind.mobile.api.hub.Store.java