Search in sources :

Example 1 with SubcolumnValue

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);
}
Also used : SuperToast(com.github.johnpersano.supertoasts.SuperToast) ArrayList(java.util.ArrayList) SliceValue(lecho.lib.hellocharts.model.SliceValue) SCViewPagerAdapter(com.dev.sacot41.scviewpager.SCViewPagerAdapter) DisplayMetrics(android.util.DisplayMetrics) PasswordChangeButtonGridViewAdapter(com.nightonke.saver.adapter.PasswordChangeButtonGridViewAdapter) Column(lecho.lib.hellocharts.model.Column) LineChartData(lecho.lib.hellocharts.model.LineChartData) SubcolumnValue(lecho.lib.hellocharts.model.SubcolumnValue) TextView(android.widget.TextView) LineChartView(lecho.lib.hellocharts.view.LineChartView) ImageView(android.widget.ImageView) ViewTreeObserver(android.view.ViewTreeObserver) SCViewAnimation(com.dev.sacot41.scviewpager.SCViewAnimation) PointValue(lecho.lib.hellocharts.model.PointValue) PieChartView(lecho.lib.hellocharts.view.PieChartView) PieChartData(lecho.lib.hellocharts.model.PieChartData) Point(android.graphics.Point) SCViewPager(com.dev.sacot41.scviewpager.SCViewPager) ViewPager(android.support.v4.view.ViewPager) ImageView(android.widget.ImageView) View(android.view.View) MyGridView(com.nightonke.saver.ui.MyGridView) PieChartView(lecho.lib.hellocharts.view.PieChartView) AdapterView(android.widget.AdapterView) DotsView(com.dev.sacot41.scviewpager.DotsView) TextView(android.widget.TextView) LineChartView(lecho.lib.hellocharts.view.LineChartView) ColumnChartView(lecho.lib.hellocharts.view.ColumnChartView) Point(android.graphics.Point) Line(lecho.lib.hellocharts.model.Line) PasswordChangeFragmentAdapter(com.nightonke.saver.adapter.PasswordChangeFragmentAdapter) SCPositionAnimation(com.dev.sacot41.scviewpager.SCPositionAnimation) RelativeLayout(android.widget.RelativeLayout) ColumnChartData(lecho.lib.hellocharts.model.ColumnChartData) ColumnChartView(lecho.lib.hellocharts.view.ColumnChartView)

Example 2 with SubcolumnValue

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;
            }
    }
}
Also used : ArrayList(java.util.ArrayList) SliceValue(lecho.lib.hellocharts.model.SliceValue) Column(lecho.lib.hellocharts.model.Column) SubcolumnValue(lecho.lib.hellocharts.model.SubcolumnValue) Axis(lecho.lib.hellocharts.model.Axis) SelectedValue(lecho.lib.hellocharts.model.SelectedValue) Calendar(java.util.Calendar) GregorianCalendar(java.util.GregorianCalendar) GregorianCalendar(java.util.GregorianCalendar) PieChartData(lecho.lib.hellocharts.model.PieChartData) InjectView(butterknife.InjectView) View(android.view.View) PieChartView(lecho.lib.hellocharts.view.PieChartView) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) ColumnChartView(lecho.lib.hellocharts.view.ColumnChartView) MaterialIconView(net.steamcrafted.materialiconlib.MaterialIconView) AxisValue(lecho.lib.hellocharts.model.AxisValue) ColumnChartData(lecho.lib.hellocharts.model.ColumnChartData) Map(java.util.Map) TreeMap(java.util.TreeMap)

Example 3 with SubcolumnValue

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;
    }
}
Also used : SubcolumnValue(lecho.lib.hellocharts.model.SubcolumnValue) Paint(android.graphics.Paint)

Example 4 with SubcolumnValue

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;
        }
    }
}
Also used : Column(lecho.lib.hellocharts.model.Column) SubcolumnValue(lecho.lib.hellocharts.model.SubcolumnValue)

Example 5 with SubcolumnValue

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();
    }
}
Also used : SubcolumnValue(lecho.lib.hellocharts.model.SubcolumnValue) SelectedValue(lecho.lib.hellocharts.model.SelectedValue)

Aggregations

SubcolumnValue (lecho.lib.hellocharts.model.SubcolumnValue)8 Column (lecho.lib.hellocharts.model.Column)4 SelectedValue (lecho.lib.hellocharts.model.SelectedValue)4 View (android.view.View)3 TextView (android.widget.TextView)3 ArrayList (java.util.ArrayList)3 ColumnChartData (lecho.lib.hellocharts.model.ColumnChartData)3 PieChartData (lecho.lib.hellocharts.model.PieChartData)3 SliceValue (lecho.lib.hellocharts.model.SliceValue)3 ColumnChartView (lecho.lib.hellocharts.view.ColumnChartView)3 PieChartView (lecho.lib.hellocharts.view.PieChartView)3 Paint (android.graphics.Paint)2 RecyclerView (android.support.v7.widget.RecyclerView)2 ImageView (android.widget.ImageView)2 InjectView (butterknife.InjectView)2 Map (java.util.Map)2 TreeMap (java.util.TreeMap)2 Axis (lecho.lib.hellocharts.model.Axis)2 AxisValue (lecho.lib.hellocharts.model.AxisValue)2 PointValue (lecho.lib.hellocharts.model.PointValue)2