use of lecho.lib.hellocharts.model.SubcolumnValue in project CoCoin by Nightonke.
the class ShowActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
mContext = this;
title = (TextView) findViewById(R.id.title);
CoCoinUtil.init(mContext);
title.setTypeface(CoCoinUtil.typefaceLatoLight);
title.setText(mContext.getResources().getString(R.string.app_name));
mViewPager = (SCViewPager) findViewById(R.id.viewpager_main_activity);
mDotsView = (DotsView) findViewById(R.id.dotsview_main);
mDotsView.setDotRessource(R.drawable.dot_selected, R.drawable.dot_unselected);
mDotsView.setNumberOfPage(NUM_PAGES);
mPageAdapter = new SCViewPagerAdapter(getSupportFragmentManager());
mPageAdapter.setNumberOfPage(NUM_PAGES);
mPageAdapter.setFragmentBackgroundColor(R.color.my_blue);
mViewPager.setAdapter(mPageAdapter);
mViewPager.setOverScrollMode(View.OVER_SCROLL_NEVER);
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mDotsView.selectDot(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
final Point size = SCViewAnimationUtil.getDisplaySize(this);
int iconOffsetX = CoCoinUtil.getInstance().dpToPx(28);
int iconOffsetY = CoCoinUtil.getInstance().dpToPx(28);
SCViewAnimation sc0 = new SCViewAnimation(findViewById(R.id.icon_4));
sc0.startToPosition(size.x / 4 - iconOffsetX, size.y * 2 / 7 - iconOffsetY);
sc0.addPageAnimation(new SCPositionAnimation(this, 0, 0, size.y));
mViewPager.addAnimation(sc0);
SCViewAnimation sc1 = new SCViewAnimation(findViewById(R.id.icon_11));
sc1.startToPosition(size.x * 3 / 4 - iconOffsetX, size.y * 3 / 7 - iconOffsetY);
sc1.addPageAnimation(new SCPositionAnimation(this, 0, -size.x, 0));
mViewPager.addAnimation(sc1);
SCViewAnimation sc2 = new SCViewAnimation(findViewById(R.id.icon_12));
sc2.startToPosition(size.x / 4 - iconOffsetX, size.y * 4 / 7 - iconOffsetY);
sc2.addPageAnimation(new SCPositionAnimation(this, 0, size.x, 0));
mViewPager.addAnimation(sc2);
SCViewAnimation sc3 = new SCViewAnimation(findViewById(R.id.icon_19));
sc3.startToPosition(size.x * 3 / 4 - iconOffsetX, size.y * 5 / 7 - iconOffsetY);
sc3.addPageAnimation(new SCPositionAnimation(this, 0, 0, -size.y));
mViewPager.addAnimation(sc3);
((TextView) findViewById(R.id.text_0)).setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
SCViewAnimation sc4 = new SCViewAnimation(findViewById(R.id.text_0));
sc4.addPageAnimation(new SCPositionAnimation(this, 0, -size.x, 0));
mViewPager.addAnimation(sc4);
PieChartView pie = (PieChartView) findViewById(R.id.pie);
List<SliceValue> values = new ArrayList<SliceValue>();
for (int i = 0; i < 5; ++i) {
SliceValue sliceValue = new SliceValue((float) Math.random() * 30 + 15, ContextCompat.getColor(CoCoinApplication.getAppContext(), R.color.white));
values.add(sliceValue);
}
PieChartData pieData = new PieChartData(values);
pieData.setHasLabels(false);
pieData.setHasLabelsOnlyForSelected(false);
pieData.setHasLabelsOutside(false);
pieData.setHasCenterCircle(true);
pie.setPieChartData(pieData);
pie.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
SCViewAnimation sc5 = new SCViewAnimation(pie);
sc5.startToPosition(size.x / 2, size.y / 9 - size.y);
sc5.addPageAnimation(new SCPositionAnimation(this, 0, 0, size.y));
sc5.addPageAnimation(new SCPositionAnimation(this, 1, 0, size.y));
mViewPager.addAnimation(sc5);
LineChartView line = (LineChartView) findViewById(R.id.line);
List<Line> lines = new ArrayList<Line>();
for (int i = 0; i < 1; ++i) {
List<PointValue> pointValues = new ArrayList<PointValue>();
pointValues.add(new PointValue(0, 50));
pointValues.add(new PointValue(1, 100));
pointValues.add(new PointValue(2, 20));
pointValues.add(new PointValue(3, 0));
pointValues.add(new PointValue(4, 10));
pointValues.add(new PointValue(5, 15));
pointValues.add(new PointValue(6, 40));
pointValues.add(new PointValue(7, 60));
pointValues.add(new PointValue(8, 100));
Line aLine = new Line(pointValues);
aLine.setColor(ContextCompat.getColor(CoCoinApplication.getAppContext(), R.color.white));
aLine.setShape(ValueShape.CIRCLE);
aLine.setCubic(false);
aLine.setFilled(false);
aLine.setHasLabels(false);
aLine.setHasLabelsOnlyForSelected(false);
aLine.setHasLines(true);
aLine.setHasPoints(true);
lines.add(aLine);
}
LineChartData linedata = new LineChartData(lines);
linedata.setBaseValue(Float.NEGATIVE_INFINITY);
line.setLineChartData(linedata);
line.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
SCViewAnimation sc6 = new SCViewAnimation(line);
sc6.startToPosition(-size.x, null);
sc6.addPageAnimation(new SCPositionAnimation(this, 0, size.x, 0));
sc6.addPageAnimation(new SCPositionAnimation(this, 1, size.x, 0));
mViewPager.addAnimation(sc6);
ColumnChartView histogram = (ColumnChartView) findViewById(R.id.histogram);
List<Column> columns = new ArrayList<Column>();
List<SubcolumnValue> subcolumnValues;
for (int i = 0; i < 5; ++i) {
subcolumnValues = new ArrayList<SubcolumnValue>();
for (int j = 0; j < 1; ++j) {
subcolumnValues.add(new SubcolumnValue((float) Math.random() * 50f + 5, ContextCompat.getColor(CoCoinApplication.getAppContext(), R.color.white)));
}
Column column = new Column(subcolumnValues);
column.setHasLabels(false);
column.setHasLabelsOnlyForSelected(false);
columns.add(column);
}
ColumnChartData histogramData = new ColumnChartData(columns);
histogram.setColumnChartData(histogramData);
histogram.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
SCViewAnimation sc7 = new SCViewAnimation(histogram);
sc7.startToPosition(size.x / 2 - CoCoinUtil.getInstance().dpToPx(140), size.y * 8 / 9 - CoCoinUtil.getInstance().dpToPx(140) + size.y);
sc7.addPageAnimation(new SCPositionAnimation(this, 0, 0, -size.y));
sc7.addPageAnimation(new SCPositionAnimation(this, 1, 0, size.y));
mViewPager.addAnimation(sc7);
((TextView) findViewById(R.id.text_1)).setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
SCViewAnimation sc8 = new SCViewAnimation(findViewById(R.id.text_1));
sc8.startToPosition(size.x, null);
sc8.addPageAnimation(new SCPositionAnimation(this, 0, -size.x, 0));
sc8.addPageAnimation(new SCPositionAnimation(this, 1, -size.x, 0));
mViewPager.addAnimation(sc8);
SCViewAnimation sc9 = new SCViewAnimation(findViewById(R.id.cloud));
sc9.startToPosition(size.x / 2 - CoCoinUtil.getInstance().dpToPx(100) + size.x, size.y / 7);
sc9.addPageAnimation(new SCPositionAnimation(this, 1, -size.x, 0));
sc9.addPageAnimation(new SCPositionAnimation(this, 2, 0, size.y));
mViewPager.addAnimation(sc9);
SCViewAnimation sc10 = new SCViewAnimation(findViewById(R.id.mobile));
sc10.startToPosition(size.x / 2 - size.x, size.y * 6 / 7 - CoCoinUtil.getInstance().dpToPx(100));
sc10.addPageAnimation(new SCPositionAnimation(this, 1, size.x, 0));
sc10.addPageAnimation(new SCPositionAnimation(this, 2, 0, -size.y));
mViewPager.addAnimation(sc10);
((TextView) findViewById(R.id.text_2)).setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
SCViewAnimation sc11 = new SCViewAnimation(findViewById(R.id.text_2));
sc11.startToPosition(size.x, null);
sc11.addPageAnimation(new SCPositionAnimation(this, 1, -size.x, 0));
sc11.addPageAnimation(new SCPositionAnimation(this, 2, -size.x, 0));
mViewPager.addAnimation(sc11);
ImageView remind1 = (ImageView) findViewById(R.id.remind_1);
remind1.getLayoutParams().width = size.x / 3;
remind1.getLayoutParams().height = size.x / 3 * 653 / 320;
SCViewAnimation sc12 = new SCViewAnimation(findViewById(R.id.remind_1));
sc12.startToPosition(size.x / 2 - size.x, size.y / 11);
sc12.addPageAnimation(new SCPositionAnimation(this, 2, size.x, 0));
sc12.addPageAnimation(new SCPositionAnimation(this, 3, size.x, 0));
mViewPager.addAnimation(sc12);
ImageView remind2 = (ImageView) findViewById(R.id.remind_2);
remind2.getLayoutParams().width = size.x / 3;
remind2.getLayoutParams().height = size.x / 3 * 653 / 320;
SCViewAnimation sc13 = new SCViewAnimation(findViewById(R.id.remind_2));
sc13.startToPosition(size.x / 2 + size.x - size.x / 3, size.y * 10 / 11 - remind1.getLayoutParams().height);
sc13.addPageAnimation(new SCPositionAnimation(this, 2, -size.x, 0));
sc13.addPageAnimation(new SCPositionAnimation(this, 3, -size.x, 0));
mViewPager.addAnimation(sc13);
((TextView) findViewById(R.id.text_3)).setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
SCViewAnimation sc14 = new SCViewAnimation(findViewById(R.id.text_3));
sc14.startToPosition(size.x, null);
sc14.addPageAnimation(new SCPositionAnimation(this, 2, -size.x, 0));
sc14.addPageAnimation(new SCPositionAnimation(this, 3, -size.x, 0));
mViewPager.addAnimation(sc14);
View statusBar = findViewById(R.id.status_bar);
statusBar.setLayoutParams(new RelativeLayout.LayoutParams(statusBar.getLayoutParams().width, getStatusBarHeight()));
SCViewAnimation statusBarAnimation = new SCViewAnimation(statusBar);
statusBarAnimation.startToPosition(null, -getStatusBarHeight());
statusBarAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, getStatusBarHeight()));
mViewPager.addAnimation(statusBarAnimation);
toolbarLayout = findViewById(R.id.toolbar_layout);
SCViewAnimation toolbarLayoutAnimation = new SCViewAnimation(toolbarLayout);
toolbarLayoutAnimation.startToPosition(null, -size.y / 2);
toolbarLayoutAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, size.y / 2));
mViewPager.addAnimation(toolbarLayoutAnimation);
passwordAdapter = new PasswordChangeFragmentAdapter(getSupportFragmentManager());
viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setScrollBarFadeDuration(700);
viewPager.setAdapter(passwordAdapter);
myGridView = (MyGridView) findViewById(R.id.gridview);
myGridViewAdapter = new PasswordChangeButtonGridViewAdapter(this);
myGridView.setAdapter(myGridViewAdapter);
myGridView.setOnItemClickListener(gridViewClickListener);
myGridView.setOnItemLongClickListener(gridViewLongClickListener);
myGridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
myGridView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
View lastChild = myGridView.getChildAt(myGridView.getChildCount() - 1);
RelativeLayout.LayoutParams relativeLayout = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, lastChild.getBottom());
relativeLayout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
myGridView.setLayoutParams(relativeLayout);
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
RelativeLayout.LayoutParams viewPagerLayoutParams = new RelativeLayout.LayoutParams(viewPager.getLayoutParams().width, 800);
viewPagerLayoutParams.topMargin = getStatusBarHeight() + CoCoinUtil.getToolBarHeight(mContext) / 2;
viewPager.setLayoutParams(viewPagerLayoutParams);
}
});
superToast = new SuperToast(this);
SCViewAnimation gridViewAnimation = new SCViewAnimation(myGridView);
gridViewAnimation.startToPosition(null, size.y);
gridViewAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, -size.y));
mViewPager.addAnimation(gridViewAnimation);
SCViewAnimation viewpagerAnimation = new SCViewAnimation(viewPager);
viewpagerAnimation.startToPosition(null, -size.y);
viewpagerAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, size.y));
mViewPager.addAnimation(viewpagerAnimation);
View background = findViewById(R.id.background);
SCViewAnimation backgroundAnimation = new SCViewAnimation(background);
backgroundAnimation.startToPosition(null, -size.y - 100);
backgroundAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, size.y + 100));
mViewPager.addAnimation(backgroundAnimation);
}
use of lecho.lib.hellocharts.model.SubcolumnValue in project CoCoin by Nightonke.
the class TagViewRecyclerViewAdapter method onBindViewHolder.
@Override
public void onBindViewHolder(final viewHolder holder, final int position) {
switch(getItemViewType(position)) {
case TYPE_HEADER:
if (IS_EMPTY) {
holder.sum.setText(mContext.getResources().getString(R.string.tag_empty));
holder.sum.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
holder.from.setVisibility(View.INVISIBLE);
holder.to.setVisibility(View.INVISIBLE);
} else {
holder.from.setText(mContext.getResources().getString(R.string.from) + " " + startYear + " " + CoCoinUtil.GetMonthShort(startMonth));
holder.sum.setText(CoCoinUtil.GetInMoney((int) Sum));
holder.to.setText(mContext.getResources().getString(R.string.to) + " " + endYear + " " + CoCoinUtil.GetMonthShort(endMonth));
holder.to.setTypeface(CoCoinUtil.GetTypeface());
holder.from.setTypeface(CoCoinUtil.GetTypeface());
}
holder.sum.setTypeface(CoCoinUtil.typefaceLatoLight);
break;
case TYPE_CELL:
int year = contents.get(position - 1).get(0).getCalendar().get(Calendar.YEAR);
int month = contents.get(position - 1).get(0).getCalendar().get(Calendar.MONTH) + 1;
PieChartData pieChartData;
List<SubcolumnValue> subcolumnValues;
final List<Column> columns;
ColumnChartData columnChartData;
final List<SliceValue> sliceValues;
holder.date.setTypeface(CoCoinUtil.GetTypeface());
holder.expanse.setTypeface(CoCoinUtil.GetTypeface());
switch(chartType) {
case PIE:
sliceValues = new ArrayList<>();
for (Map.Entry<Integer, Double> entry : AllTagExpanse.get(position - 1).entrySet()) {
if (entry.getValue() >= 1) {
SliceValue sliceValue = new SliceValue((float) (double) entry.getValue(), mContext.getResources().getColor(CoCoinUtil.GetTagColorResource(entry.getKey())));
sliceValue.setLabel(String.valueOf(entry.getKey()));
sliceValues.add(sliceValue);
}
}
pieChartData = new PieChartData(sliceValues);
pieChartData.setHasLabels(false);
pieChartData.setHasLabelsOnlyForSelected(false);
pieChartData.setHasLabelsOutside(false);
pieChartData.setHasCenterCircle(SettingManager.getInstance().getIsHollow());
holder.pie.setPieChartData(pieChartData);
holder.pie.setOnValueTouchListener(new PieValueTouchListener(position - 1));
holder.pie.setChartRotationEnabled(false);
if (type.get(position - 1).equals(SHOW_IN_MONTH)) {
holder.date.setText(year + " " + CoCoinUtil.GetMonthShort(month));
} else {
holder.date.setText(year + " ");
}
holder.expanse.setText(CoCoinUtil.GetInMoney((int) (double) SumList.get(position - 1)));
holder.iconRight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SelectedPosition[position] = (SelectedPosition[position] + 1) % sliceValues.size();
SelectedValue selectedValue = new SelectedValue(SelectedPosition[position], 0, SelectedValue.SelectedValueType.NONE);
holder.pie.selectValue(selectedValue);
}
});
holder.iconLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SelectedPosition[position] = (SelectedPosition[position] - 1 + sliceValues.size()) % sliceValues.size();
SelectedValue selectedValue = new SelectedValue(SelectedPosition[position], 0, SelectedValue.SelectedValueType.NONE);
holder.pie.selectValue(selectedValue);
}
});
break;
case SUM_HISTOGRAM:
columns = new ArrayList<>();
if (type.get(position - 1).equals(SHOW_IN_YEAR)) {
int numColumns = 12;
for (int i = 0; i < numColumns; i++) {
subcolumnValues = new ArrayList<>();
SubcolumnValue value = new SubcolumnValue(MonthExpanseSum[(year - startYear) * 12 + i], CoCoinUtil.GetRandomColor());
value.setLabel(CoCoinUtil.MONTHS_SHORT[month] + " " + year);
subcolumnValues.add(value);
Column column = new Column(subcolumnValues);
column.setHasLabels(false);
column.setHasLabelsOnlyForSelected(false);
columns.add(column);
}
columnChartData = new ColumnChartData(columns);
Axis axisX = new Axis();
List<AxisValue> axisValueList = new ArrayList<>();
for (int i = 0; i < numColumns; i++) {
axisValueList.add(new AxisValue(i).setLabel(CoCoinUtil.GetMonthShort(i + 1)));
}
axisX.setValues(axisValueList);
Axis axisY = new Axis().setHasLines(true);
columnChartData.setAxisXBottom(axisX);
columnChartData.setAxisYLeft(axisY);
columnChartData.setStacked(true);
holder.chart.setColumnChartData(columnChartData);
holder.chart.setZoomEnabled(false);
holder.chart.setOnValueTouchListener(new ValueTouchListener(position - 1));
holder.date.setText(year + "");
holder.expanse.setText(CoCoinUtil.GetInMoney((int) (double) SumList.get(position - 1)));
}
if (type.get(position - 1).equals(SHOW_IN_MONTH)) {
Calendar tempCal = new GregorianCalendar(year, month - 1, 1);
int daysInMonth = tempCal.getActualMaximum(Calendar.DAY_OF_MONTH);
int numColumns = daysInMonth;
for (int i = 0; i < numColumns; ++i) {
subcolumnValues = new ArrayList<>();
SubcolumnValue value = new SubcolumnValue((float) DayExpanseSum[(year - startYear) * 372 + (month - 1) * 31 + i], CoCoinUtil.GetRandomColor());
value.setLabel(CoCoinUtil.MONTHS_SHORT[month] + " " + (i + 1) + " " + year);
subcolumnValues.add(value);
Column column = new Column(subcolumnValues);
column.setHasLabels(false);
column.setHasLabelsOnlyForSelected(false);
columns.add(column);
}
columnChartData = new ColumnChartData(columns);
Axis axisX = new Axis();
List<AxisValue> axisValueList = new ArrayList<>();
for (int i = 0; i < daysInMonth; i++) {
axisValueList.add(new AxisValue(i).setLabel(i + 1 + ""));
}
axisX.setValues(axisValueList);
Axis axisY = new Axis().setHasLines(true);
columnChartData.setAxisXBottom(axisX);
columnChartData.setAxisYLeft(axisY);
columnChartData.setStacked(true);
holder.chart.setColumnChartData(columnChartData);
holder.chart.setZoomEnabled(false);
holder.chart.setOnValueTouchListener(new ValueTouchListener(position - 1));
holder.date.setText(year + " " + CoCoinUtil.GetMonthShort(month));
holder.expanse.setText(CoCoinUtil.GetInMoney((int) (double) SumList.get(position - 1)));
}
holder.iconRight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
do {
SelectedPosition[position] = (SelectedPosition[position] + 1) % columns.size();
} while (holder.chart.getChartData().getColumns().get(SelectedPosition[position]).getValues().size() == 0 || holder.chart.getChartData().getColumns().get(SelectedPosition[position]).getValues().get(0).getValue() == 0);
SelectedValue selectedValue = new SelectedValue(SelectedPosition[position], 0, SelectedValue.SelectedValueType.COLUMN);
holder.chart.selectValue(selectedValue);
}
});
holder.iconLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
do {
SelectedPosition[position] = (SelectedPosition[position] - 1 + columns.size()) % columns.size();
} while (holder.chart.getChartData().getColumns().get(SelectedPosition[position]).getValues().size() == 0 || holder.chart.getChartData().getColumns().get(SelectedPosition[position]).getValues().get(0).getValue() == 0);
SelectedValue selectedValue = new SelectedValue(SelectedPosition[position], 0, SelectedValue.SelectedValueType.COLUMN);
holder.chart.selectValue(selectedValue);
}
});
break;
case HISTOGRAM:
columns = new ArrayList<>();
if (type.get(position - 1).equals(SHOW_IN_YEAR)) {
int numColumns = 12;
for (int i = 0; i < numColumns; i++) {
subcolumnValues = new ArrayList<>();
SubcolumnValue value = new SubcolumnValue(MonthExpanseSum[(year - startYear) * 12 + i], CoCoinUtil.GetRandomColor());
value.setLabel(CoCoinUtil.MONTHS_SHORT[month] + " " + year);
subcolumnValues.add(value);
Column column = new Column(subcolumnValues);
column.setHasLabels(false);
column.setHasLabelsOnlyForSelected(false);
columns.add(column);
}
columnChartData = new ColumnChartData(columns);
Axis axisX = new Axis();
List<AxisValue> axisValueList = new ArrayList<>();
for (int i = 0; i < numColumns; i++) {
axisValueList.add(new AxisValue(i).setLabel(CoCoinUtil.GetMonthShort(i + 1)));
}
axisX.setValues(axisValueList);
Axis axisY = new Axis().setHasLines(true);
columnChartData.setAxisXBottom(axisX);
columnChartData.setAxisYLeft(axisY);
columnChartData.setStacked(true);
holder.chart.setColumnChartData(columnChartData);
holder.chart.setZoomEnabled(false);
holder.chart.setOnValueTouchListener(new ValueTouchListener(position - 1));
holder.date.setText(year + "");
holder.expanse.setText(CoCoinUtil.GetInMoney((int) (double) SumList.get(position - 1)));
}
if (type.get(position - 1).equals(SHOW_IN_MONTH)) {
Calendar tempCal = Calendar.getInstance();
tempCal.set(year, month - 1, 1);
tempCal.add(Calendar.SECOND, 0);
int daysInMonth = tempCal.getActualMaximum(Calendar.DAY_OF_MONTH);
int p = contents.get(position - 1).size() - 1;
int numColumns = daysInMonth;
for (int i = 0; i < numColumns; ++i) {
subcolumnValues = new ArrayList<>();
SubcolumnValue value = new SubcolumnValue(0, CoCoinUtil.GetRandomColor());
subcolumnValues.add(value);
while (p >= 0 && contents.get(position - 1).get(p).getCalendar().get(Calendar.DAY_OF_MONTH) == i + 1) {
subcolumnValues.get(0).setValue(subcolumnValues.get(0).getValue() + (float) contents.get(position - 1).get(p).getMoney());
subcolumnValues.get(0).setLabel(p + "");
p--;
}
Column column = new Column(subcolumnValues);
column.setHasLabels(false);
column.setHasLabelsOnlyForSelected(false);
columns.add(column);
}
columnChartData = new ColumnChartData(columns);
Axis axisX = new Axis();
List<AxisValue> axisValueList = new ArrayList<>();
for (int i = 0; i < daysInMonth; i++) {
axisValueList.add(new AxisValue(i).setLabel(i + 1 + ""));
}
axisX.setValues(axisValueList);
Axis axisY = new Axis().setHasLines(true);
columnChartData.setAxisXBottom(axisX);
columnChartData.setAxisYLeft(axisY);
columnChartData.setStacked(true);
holder.chart.setColumnChartData(columnChartData);
holder.chart.setZoomEnabled(false);
holder.chart.setOnValueTouchListener(new ValueTouchListener(position - 1));
holder.date.setText(year + " " + CoCoinUtil.GetMonthShort(month));
holder.expanse.setText(CoCoinUtil.GetInMoney((int) (double) SumList.get(position - 1)));
}
holder.iconRight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
do {
SelectedPosition[position] = (SelectedPosition[position] + 1) % columns.size();
} while (holder.chart.getChartData().getColumns().get(SelectedPosition[position]).getValues().size() == 0 || holder.chart.getChartData().getColumns().get(SelectedPosition[position]).getValues().get(0).getValue() == 0);
SelectedValue selectedValue = new SelectedValue(SelectedPosition[position], 0, SelectedValue.SelectedValueType.NONE);
holder.chart.selectValue(selectedValue);
}
});
holder.iconLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
do {
SelectedPosition[position] = (SelectedPosition[position] - 1 + columns.size()) % columns.size();
} while (holder.chart.getChartData().getColumns().get(SelectedPosition[position]).getValues().size() == 0 || holder.chart.getChartData().getColumns().get(SelectedPosition[position]).getValues().get(0).getValue() == 0);
SelectedValue selectedValue = new SelectedValue(SelectedPosition[position], 0, SelectedValue.SelectedValueType.NONE);
holder.chart.selectValue(selectedValue);
}
});
break;
}
}
}
use of lecho.lib.hellocharts.model.SubcolumnValue in project hellocharts-android by lecho.
the class ColumnChartRenderer method processColumnForStacked.
private void processColumnForStacked(Canvas canvas, Column column, float columnWidth, int columnIndex, int mode) {
final float rawX = computator.computeRawX(columnIndex);
final float halfColumnWidth = columnWidth / 2;
float mostPositiveValue = baseValue;
float mostNegativeValue = baseValue;
float subcolumnBaseValue = baseValue;
int valueIndex = 0;
for (SubcolumnValue columnValue : column.getValues()) {
columnPaint.setColor(columnValue.getColor());
if (columnValue.getValue() >= baseValue) {
// Using values instead of raw pixels make code easier to
// understand(for me)
subcolumnBaseValue = mostPositiveValue;
mostPositiveValue += columnValue.getValue();
} else {
subcolumnBaseValue = mostNegativeValue;
mostNegativeValue += columnValue.getValue();
}
final float rawBaseY = computator.computeRawY(subcolumnBaseValue);
final float rawY = computator.computeRawY(subcolumnBaseValue + columnValue.getValue());
calculateRectToDraw(columnValue, rawX - halfColumnWidth, rawX + halfColumnWidth, rawBaseY, rawY);
switch(mode) {
case MODE_DRAW:
drawSubcolumn(canvas, column, columnValue, true);
break;
case MODE_HIGHLIGHT:
highlightSubcolumn(canvas, column, columnValue, valueIndex, true);
break;
case MODE_CHECK_TOUCH:
checkRectToDraw(columnIndex, valueIndex);
break;
default:
// be thrown
throw new IllegalStateException("Cannot process column in mode: " + mode);
}
++valueIndex;
}
}
use of lecho.lib.hellocharts.model.SubcolumnValue in project hellocharts-android by lecho.
the class ColumnChartRenderer method calculateMaxViewportForStacked.
private void calculateMaxViewportForStacked(ColumnChartData data) {
for (Column column : data.getColumns()) {
float sumPositive = baseValue;
float sumNegative = baseValue;
for (SubcolumnValue columnValue : column.getValues()) {
if (columnValue.getValue() >= baseValue) {
sumPositive += columnValue.getValue();
} else {
sumNegative += columnValue.getValue();
}
}
if (sumPositive > tempMaximumViewport.top) {
tempMaximumViewport.top = sumPositive;
}
if (sumNegative < tempMaximumViewport.bottom) {
tempMaximumViewport.bottom = sumNegative;
}
}
}
use of lecho.lib.hellocharts.model.SubcolumnValue in project hellocharts-android by lecho.
the class ColumnChartView method callTouchListener.
@Override
public void callTouchListener() {
SelectedValue selectedValue = chartRenderer.getSelectedValue();
if (selectedValue.isSet()) {
SubcolumnValue value = data.getColumns().get(selectedValue.getFirstIndex()).getValues().get(selectedValue.getSecondIndex());
onValueTouchListener.onValueSelected(selectedValue.getFirstIndex(), selectedValue.getSecondIndex(), value);
} else {
onValueTouchListener.onValueDeselected();
}
}
Aggregations