
JavaScript:
//MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maind);
DoughnutChartView x = (DoughnutChartView) findViewById(R.id.doughnut_chart);
x.setTotalAmount(60);
int[] arrayOfInt2 = new int[4];
arrayOfInt2[0] = MainActivity.this.getResources().getColor(R.color.pie_income_1);
arrayOfInt2[1] = MainActivity.this.getResources().getColor(R.color.pie_income_2);
arrayOfInt2[2] = MainActivity.this.getResources().getColor(R.color.pie_income_3);
arrayOfInt2[3] = MainActivity.this.getResources().getColor(R.color.pie_income_4);
x.setProgressColorList(arrayOfInt2);
double[] arrayOfDouble = new double[4];
arrayOfDouble[0] = 30;
arrayOfDouble[1] = 10;
arrayOfDouble[2] = 10;
arrayOfDouble[3] = 10;
x.setCirclePieAmountList(arrayOfDouble);
TextView c1 = (TextView) findViewById(R.id.doughtnut_chart_color1);
c1.setBackgroundResource(R.color.pie_income_1);
c1 = (TextView) findViewById(R.id.doughtnut_chart_text1);
c1.setText("asdf1");
TextView c2 = (TextView) findViewById(R.id.doughtnut_chart_color2);
c2.setBackgroundResource(R.color.pie_income_2);
c2 = (TextView) findViewById(R.id.doughtnut_chart_text2);
c2.setText("asdf2");
TextView c3 = (TextView) findViewById(R.id.doughtnut_chart_color3);
c3.setBackgroundResource(R.color.pie_income_3);
c3 = (TextView) findViewById(R.id.doughtnut_chart_text3);
c3.setText("asdf3");
TextView c4 = (TextView) findViewById(R.id.doughtnut_chart_color4);
c4.setBackgroundResource(R.color.pie_income_4);
c4 = (TextView) findViewById(R.id.doughtnut_chart_text4);
c4.setText("asdf4");
}
}
JavaScript:
//DoughnutChartView.java
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.View;
public class DoughnutChartView extends View {
private boolean fpa;
private int fpb;
private final RectF fpc;
private float fpd;
private int[] fpe;
private double fpf;
private double[] fpg;
private final Paint fph;
private final int fpi;
private int fpj;
private int fpk;
private float fpl;
private float fpm;
public DoughnutChartView(Context arg2) {
this(arg2, null);
}
public DoughnutChartView(Context arg4, AttributeSet arg5) {
super(arg4, arg5);
this.fpa = true;
this.fpb = 10;
this.fpc = new RectF();
this.fpj = 0;
this.fpk = 0;
this.setWheelSize(20);
this.fpi = 1;
this.fph = new Paint(1);
this.fph.setStyle(Paint.Style.STROKE);
this.fph.setStrokeWidth(((float)this.fpb));
this.fpa = false;
}
public double[] getCirclePieAmountList() {
return this.fpg;
}
public int[] getProgressColorList() {
return this.fpe;
}
public double getTotalAmount() {
return this.fpf;
}
private float mpa(double arg5) {
if (this.fpf == 0.0D) {
return 0.0F;
}
return (float)(360.0D * arg5 / this.fpf);
}
private void mpa(int arg4, int arg5) {
int v0 = this.fpi;
switch(v0 & 7) {
case 3: {
this.fpj = 0;
break;
}
case 5: {
this.fpj = arg4;
break;
}
default: {
this.fpj = arg4 / 2;
break;
}
}
switch(v0 & 112) {
case 48: {
this.fpk = 0;
break;
}
case 80: {
this.fpk = arg5;
break;
}
default: {
this.fpk = arg5 / 2;
break;
}
}
}
protected void onDraw(Canvas arg13) {
float v11 = 1f;
double v0 = 0;
if(this.fpf != v0 && this.fpg.length != 0) {
arg13.translate(this.fpl, this.fpm);
int v9 = this.fpg.length;
float v2 = 270f;
int v6 = 0;
double v7 = v0;
while(v6 < v9) {
this.fph.setColor(this.fpe[v6]);
float v10 = this.mpa(this.fpg[v6]);
arg13.drawArc(this.fpc, v2, v10 - v11, false, this.fph);
float v3 = v2 + v10;
double v1 = v7 + this.fpg[v6];
++v6;
v7 = v1;
v2 = v3;
}
if(this.fpf > v7) {
float v0_1 = this.mpa(this.fpf - v7);
this.fph.setColor(this.fpe[3]);
arg13.drawArc(this.fpc, v2, v0_1 - v11, false, this.fph);
}
}
}
protected void onMeasure(int arg10, int arg11) {
int v0 = DoughnutChartView.getDefaultSize(this.getSuggestedMinimumHeight(), arg11);
int v1 = DoughnutChartView.getDefaultSize(this.getSuggestedMinimumWidth(), arg10);
int v2 = Math.min(v1, v0);
this.setMeasuredDimension(v2, v0);
float v3 = 0.5f * (((float)v2));
this.fpd = v3 - (((float)this.fpb));
this.fpc.set(-this.fpd, -this.fpd, this.fpd, this.fpd);
this.mpa(v1 - v2, v0 - v2);
this.fpl = (((float)this.fpj)) + v3;
this.fpm = (((float)this.fpk)) + v3;
}
protected void onRestoreInstanceState(Parcelable paramParcelable)
{
if ((paramParcelable instanceof Bundle))
{
super.onRestoreInstanceState(((Bundle)paramParcelable).getParcelable("saved_state"));
return;
}
super.onRestoreInstanceState(paramParcelable);
}
protected Parcelable onSaveInstanceState() {
Bundle v0 = new Bundle();
v0.putParcelable("saved_state", super.onSaveInstanceState());
v0.putFloat("progress", 180f);
return ((Parcelable)v0);
}
public void setCirclePieAmountList(double[] arg1) {
this.fpg = arg1;
}
public void setProgressColorList(int[] arg1) {
this.fpe = arg1;
}
public void setTotalAmount(double arg1) {
this.fpf = arg1;
}
private void setWheelSize(int arg1) {
this.fpb = arg1;
}
}
the xml :
JavaScript:
//drawable/card_now_style_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"></selector>
//values/colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="pie_income_1">#ff8abd00</color>
<color name="pie_income_2">#ffa8d324</color>
<color name="pie_income_3">#ffc5e26d</color>
<color name="pie_income_4">#ffe2f0b6</color>
<color name="pie_expense_1">#ffff5f5f</color>
<color name="pie_expense_2">#ffff8686</color>
<color name="pie_expense_3">#ffffafaf</color>
<color name="pie_expense_4">#ffffcaca</color>
</resources>
//values/styles.xml
<style name="TextAppearance" parent="@android:style/TextAppearance" />
<style name="TextAppearance.EditEvent_Small" parent="@style/TextAppearance">
<item name="android:textAppearance">?android:textAppearanceSmall</item>
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:textColor">#ffaaaaaa</item>
</style>
<style name="TextAppearance.SliderHeadingAppearance" parent="@style/TextAppearance.EditEvent_Small">
<item name="android:textStyle">bold</item>
</style>
<style name="TextAppearance.EditEvent_LabelSmall" parent="@style/TextAppearance.EditEvent_Small">
<item name="android:paddingLeft">8.0dip</item>
<item name="android:paddingRight">8.0dip</item>
<item name="android:paddingBottom">8.0dip</item>
<item name="android:layout_width">144.0dip</item>
<item name="android:layout_marginLeft">16.0dip</item>
<item name="android:layout_marginRight">16.0dip</item>
<item name="android:minHeight">24.0dip</item>
</style>
<style name="TagTextAppearance" parent="@android:style/Widget.TextView">
<item name="android:minHeight">48.0dip</item>
</style>
<style name="nowCardStyle" parent="@android:style/Widget.TextView">
<item name="android:gravity">center</item>
<item name="android:background">@drawable/card_now_style_drawable</item>
<item name="android:padding">@dimen/now_card_style_padding</item>
</style>
//values/dimens.xml
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="alp_lockpatternview_max_size">400.0dip</dimen>
<dimen name="default_circle_indicator_radius">3.0dip</dimen>
<dimen name="default_circle_indicator_stroke_width">1.0dip</dimen>
<dimen name="default_line_indicator_line_width">12.0dip</dimen>
<dimen name="default_line_indicator_gap_width">4.0dip</dimen>
<dimen name="default_line_indicator_stroke_width">1.0dip</dimen>
<dimen name="default_title_indicator_clip_padding">4.0dip</dimen>
<dimen name="default_title_indicator_footer_line_height">2.0dip</dimen>
<dimen name="default_title_indicator_footer_indicator_height">4.0dip</dimen>
<dimen name="default_title_indicator_footer_indicator_underline_padding">20.0dip</dimen>
<dimen name="default_title_indicator_footer_padding">7.0dip</dimen>
<dimen name="default_title_indicator_text_size">15.0dip</dimen>
<dimen name="default_title_indicator_title_padding">5.0dip</dimen>
<dimen name="default_title_indicator_top_padding">7.0dip</dimen>
<dimen name="actionbar_compat_height">45.0dip</dimen>
<dimen name="text_size_extra_tiny">12.0sp</dimen>
<dimen name="text_size_tiny">13.0sp</dimen>
<dimen name="text_size_small">15.0sp</dimen>
<dimen name="text_size_medium">18.0sp</dimen>
<dimen name="text_size_large">22.0sp</dimen>
<dimen name="transaction_row_size_tiny">13.0sp</dimen>
<dimen name="transaction_row_size_small">15.0sp</dimen>
<dimen name="transaction_row_size_medium">18.0sp</dimen>
<dimen name="text_size_extra_large">26.0sp</dimen>
<dimen name="summary_left_padding">8.0dip</dimen>
<dimen name="pane_seperator_width">1.0dip</dimen>
<dimen name="tiny_seperator">0.5dip</dimen>
<dimen name="tab_text_padding">16.0dip</dimen>
<dimen name="reminders_list_padding_side">8.0dip</dimen>
<dimen name="reminders_date_margin_right">5.0dip</dimen>
<dimen name="amount_reminder_width">80.0dip</dimen>
<dimen name="doughnut_chart_size">150.0dip</dimen>
<dimen name="due_date_btn_width">125.0dip</dimen>
<dimen name="item_height">67.0dip</dimen>
<dimen name="due_time_btn_width">90.0dip</dimen>
<dimen name="widget_margin">20.0dip</dimen>
<dimen name="large_widget_margin">20.0dip</dimen>
<dimen name="sign_elements_padding">16.0dip</dimen>
<dimen name="widget_padding_margin">8.0dip</dimen>
<dimen name="slidingmenu_marginLeft">8.0dip</dimen>
<dimen name="form_grid_marginRight">8.0dip</dimen>
<dimen name="form_grid_marginBottom">4.0dip</dimen>
<dimen name="transaction_image_disp_size">150.0dip</dimen>
<dimen name="slidingmenu_width">250.0dip</dimen>
<dimen name="shadow_width">15.0dip</dimen>
<dimen name="list_padding">10.0dip</dimen>
<dimen name="now_card_style_padding">25.0dip</dimen>
<dimen name="left_line_chart_label_width">64.0dip</dimen>
<dimen name="summary_page_padding">8.0dip</dimen>
</resources>